Python

Seznam razumevanja v Pythonu

Seznam razumevanja v Pythonu
Razumevanja seznamov se v Pythonu pogosto uporabljajo za pisanje enovrstičnih stavkov, ki ustvarijo nov seznam ali slovar z zavijanjem po iterabilnem objektu. Ta članek bo razložil, kako uporabljati razumevanje seznamov v Pythonu, začenši z osnovno razlago, kako zanke delujejo v Pythonu.

Za zanko v Pythonu

Izjava zanke for v Pythonu zaporedno pregleduje člane katerega koli predmeta, seznama, niza itd. V primerjavi z drugimi programskimi jeziki je njegova sintaksa bistveno bolj čista in ne zahteva ročne določitve korakov ponovitve in zagona ponovitve. Čeprav obstajajo načini, da njegovo vedenje postane enako kot drugi programski jeziki (v tem članku ne bomo obravnavali). Lahko tudi izvajate nekaj nadzora nad zankami z uporabo stavkov, kot so nadaljevanje, prekinitev, podajanje itd. Spodaj je preprost primer zanke for v Pythonu:

za x v območju (10):
natisni (x)

Zgornja zanka for bo natisnila deset številk, ki se začnejo od 0 do 9.

Razumevanje seznama

Razumevanje seznama ni nič drugega kot stenografski / jedrnat način za zapisovanje večvrstičnih zank v enovrstni stavek. Spodnji primer razumevanja seznama bo ustvaril nov seznam kot [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], tako da vanj vključi vse vrednosti "x".

številke = [x za x v območju (10)]
tisk (številke)

Upoštevajte, da razumevanje seznama vedno ustvari nov seznam in ne spremeni izvirnih iterabel, uporabljenih v izrazu. Tipični izraz za razumevanje seznama mora vsebovati klavzulo "za" in mu lahko sledijo pogojni stavki "če" in "drugače". Brez uporabe razumevanja seznama bo zgornji primer napisan na naslednji način:

številke = []
za x v območju (10):
številke.dodaj (x)
tisk (številke)

Zmogljivost in berljivost

Razumevanje seznama je hitrejše kot za zanke. Če pa ne ponovite več sto tisoč elementov, ne boste opazili večjih izboljšav zmogljivosti. Medtem ko razumevanje seznama omogoča jedrnat način pisanja zank, lahko zapleteni izrazi privedejo do slabe berljivosti kode in povečane podrobnosti. Pomembno je, da je koda berljiva, razen če je doseganje največje zmogljivosti nujno potrebno za vaš program.

Primer: Uporaba sintakse razumevanja seznamov s slovarji in kompleti

Slovar python je zbirka elementov, definiranih v parih ključ-vrednost, medtem ko je niz zbirka enoličnih vrednosti, pri katerih dvojniki niso dovoljeni. Razumevanje seznamov je mogoče uporabiti tudi s slovarji in nabori Python. Sintaksa se nekoliko razlikuje, namesto da izraz zavijete v kvadratne oklepaje, boste zdaj morali uporabiti zavite oklepaje. Namesto novega seznama boste dobili tudi nov predmet slovar / nabor.

data = "city": "new york", "name": "john doe"
formatted_data = k: v.title () za k, v v podatkih.predmeti ()
tiskanje (formatirani_podatki)

Zgornji primer bo pretvoril vrednosti nizov v velike in male črke in ustvaril nov slovar z imenom "formatted_data", katerega izhod bo: 'city': 'New York', 'name': 'John Doe'. Slovar / nastavitev na mestu lahko spremenite tudi tako, da na levi strani navedete obstoječo spremenljivko slovarja.

data = "city": "new york", "name": "john doe"
podatki = k: v.title () za k, v v podatkih.predmeti ()
tisk (podatki)

Brez uporabe razumevanja slovarja bi bila koda videti tako:

data = "city": "new york", "name": "john doe"
formatted_data =
za k, v v podatkih.postavke ():
formatted_data [k] = v.naslov ()
tiskanje (formatirani_podatki)

Ker v sklopih ni parov ključ / vrednost, lahko razumevanje nabora določimo na enak način kot razumevanje seznama. Edina razlika je uporaba kodrastih oklepajev.

Primer: Več za zanke v razumevanju seznama

Zgoraj omenjeni primer razumevanja seznama je osnovni in uporablja en sam stavek "za". Spodaj je primer, ki uporablja zanke multiple for in pogojni stavek "if".

pridevniki = ["Disco", "Eoan", "Focal", "Artful"]
živali = ["Dingo", "Hermelin", "Fossa", "Beaver"]
kodna imena = [x + "" + y za x v pridevnikih za y pri živalih, če y.zažene z (x [0])]
tisk (kodna imena)

Koda bo prikazala ['Disco Dingo', 'Eoan Hermine', 'Focal Fossa'] kot izhod. Zanki for se pomikata po seznamih pridevnikov in živali, njihovi člani pa se združijo s presledkom, le če je prva črka obeh besed enaka. Brez uporabe razumevanja seznama bi bila koda videti tako:

pridevniki = ["Disco", "Eoan", "Focal", "Artful"]
živali = ["Dingo", "Hermelin", "Fossa", "Beaver"]
kodna imena = []
za x v pridevnikih:
za y pri živalih:
če y.se začne z (x [0]):
kodna imena.dodaj (x + "" + y)
tisk (kodna imena)

Primer: seznam razumevanja s klavzulo if-else

Spodnji primer bo prikazal uporabo stavkov if in else v razumevanju seznama.

seznam_številk = [1, 2, 3, 4]
drug_list = [5, 6, 7, 8]
rezultat = [True, če (x + y)% 2 == 0 else False za x na seznamu številk za y na drugem seznamu]
natisni (rezultat)

Med petjanjem po dveh seznamih zgornje razumevanje seznama preveri, ali je vsota para elementov enakomerna ali ne. Zagon zgornje kode bo prikazal [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] kot izhod. Brez uporabe razumevanja seznama bi bila koda videti tako:

seznam_številk = [1, 2, 3, 4]
drug_list = [5, 6, 7, 8]
rezultat = []
za x na seznamu številk:
za y v drug_list:
če (x + y)% 2 == 0:
rezultat.dodaj (True)
sicer:
rezultat.dodaj (napačno)
natisni (rezultat)

Zaključek

Razumevanje seznamov je prijeten način za pisanje čistih in jedrnatih stavkov v zanki. Vendar pa lahko hitro postanejo zapleteni in težko razumljivi, če se uporabi več zank in pogojnih stavkov. Na koncu gre za raven udobja programerja, vendar je na splošno dobro, da namesto pretirane uporabe okrajšav napišete eksplicitno, berljivo in enostavno odpravljanje napak.

Namestite najnovejšo strategijo igre OpenRA v Ubuntu Linux
OpenRA je Libre / Free Real Time strateški stroj, ki poustvarja zgodnje igre Westwood, kot je klasična Command & Conquer: Red Alert. Porazdeljeni modi...
Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...