Seznam razumevanj v Pythonu

List Comprehensions Python



Dogovori o seznamih se pogosto uporabljajo v Pythonu za pisanje stavkov v eni vrstici, ki ustvarijo nov seznam ali slovar z zankanjem nad ponavljajočim se objektom. Ta članek bo razložil, kako uporabljati razumevanje seznamov v Pythonu, začenši z osnovno razlago, kako for 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 njena skladnja veliko čistejša in ne zahteva ročnega določanja korakov ponovitve in zagona iteracije. Čeprav obstajajo načini, kako narediti njegovo vedenje enako kot drugi programski jeziki (v tem članku ne bo obravnavano). Nadzor za zanke lahko izvajate tudi z uporabo stavkov, kot so continue, break, pass itd. Spodaj je preprost primer for zanke v Pythonu:







zaxv obseg(10):
tiskanje(x)

Zgornja zanka for bo natisnila deset številk, ki se začnejo od 0 in končajo pri 9.



Seznam razumevanj

Razumevanje seznama ni nič drugega kot stenografski / jedrnat način zapisovanja več vrstic za zanke v enovrstni stavek. Spodnji primer razumevanja seznama bo ustvaril nov seznam kot [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] z vključitvijo vseh vrednosti x vanj.



številke= [xzaxv obseg(10)]
tiskanje (številke)

Upoštevajte, da razumevanje seznama vedno ustvari nov seznam in ne spreminja izvirnih ponovitev, uporabljenih v izrazu. Tipičen izraz razumevanja seznama mora imeti člen for in lahko mu sledijo pogojni stavki if in else. Brez razumevanja seznama bo zgornji primer zapisan na naslednji način:





številke= []
zaxv obseg(10):
številke.priloži(x)

tiskanje (številke)

Zmogljivost in berljivost

Razumevanje seznamov je hitrejše kot pri zankah. Če pa ne ponavljate več sto tisoč predmetov, ne boste opazili večjih izboljšav delovanja. Medtem ko razumevanje seznama ponuja jedrnat način pisanja za zanke, 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 za vaš program.

Primer: Uporaba sintakse za razumevanje seznamov s slovarji in množicami

Slovar Python je zbirka elementov, opredeljenih v parih ključ-vrednost, medtem ko je niz zbirka edinstvenih vrednosti, pri katerih podvojitve niso dovoljene. Razumevanje seznamov je mogoče uporabiti tudi s slovarji in sklopi Python. Sintaksa se nekoliko razlikuje, namesto da bi zavili izraz v kvadratne oklepaje, boste zdaj morali uporabiti kodraste oklepaje. Namesto novega seznama boste dobili tudi nov slovar / nastavljeni predmet.



podatkov= {'mesto':'New York', 'ime':'John Doe'}

formatted_data= {k: v.naslov() zado,vvpodatkov.predmetov()}

tiskanje (formatted_data)

Zgornji primer pretvori vrednosti niza v velike in male črke naslova ter ustvari nov slovar z imenom formatted_data, katerega izhod bo: {'city': 'New York', 'name': 'John Doe'}. Slovar lahko spremenite / nastavite tako, da na levi strani določite obstoječo slovarsko spremenljivko.

podatkov= {'mesto':'New York', 'ime':'John Doe'}

podatkov= {k: v.naslov() zado,vvpodatkov.predmetov()}

tiskanje (podatkov)

Brez uporabe slovarjev bi bila koda videti tako:

podatkov= {'mesto':'New York', 'ime':'John Doe'}

formatted_data= {}

zado,vvpodatkov.predmetov():
formatted_data[do] =v.naslov()

tiskanje (formatted_data)

Ker v nizih ni parov ključ-vrednost, lahko razumevanje niza definiramo na enak način kot razumevanje seznama. Edina razlika je uporaba kodrastih naramnic.

Primer: Več for zank v razumevanju seznama

Zgoraj omenjeni primer razumevanja seznama je osnovni in uporablja en sam izraz za. Spodaj je primer, ki uporablja več za zanke in pogojni stavek if.

pridevniki= ['Disk', 'Eoan', 'Focal', 'Umetno']

živali= ['Dingo', 'Hermine', 'Jama', 'Bober']

kodna imena= [x +''+ inzaxvpridevnikizainvživaličein.začne z(x[0])]

tiskanje (kodna imena)

Koda bo kot izhod prikazala ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa']. Zobne zanke segajo po seznamu pridevnikov in živali, njihovi člani pa se združijo s presledkom, le če je prva črka obeh besed enaka. Brez uporabe seznamov bi bila koda videti tako:

pridevniki= ['Disk', 'Eoan', 'Focal', 'Umetno']
živali= ['Dingo', 'Hermine', 'Jama', 'Bober']

kodna imena= []

zaxvpridevniki:
zainvživali:
čein.začne z(x[0]):
kodna imena.priloži(x +''+ in)

tiskanje (kodna imena)

Primer: Navedite razumevanje s klavzulo if-else

Spodnji primer prikazuje uporabo stavkov if in else v razumevanju seznama.

seznam_številk= [1, 2, 3, 4]
another_list= [5, 6, 7, 8]

rezultat= [Prav če (x + y)%2 == 0 drugače Napačno zaxvseznam_številkzainvanother_list]

tiskanje (rezultat)

Med pregledovanjem dveh seznamov zgornji razumevanje seznama preveri, ali je vsota para elementov enaka ali ne. Če zaženete zgornjo kodo, se kot izhod prikaže [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True]. Brez uporabe razumevanja seznama bi bila koda videti tako:

seznam_številk= [1, 2, 3, 4]
another_list= [5, 6, 7, 8]
rezultat= []

zaxvseznam_številk:
zainvanother_list:
če (x + y)%2 == 0:
rezultat.priloži(Prav)
drugače:
rezultat.priloži(Napačno)

tiskanje (rezultat)

Zaključek

Seznam seznamov ponuja lep način za pisanje čistih in jedrnate izjave zanke. Vendar pa lahko hitro postanejo zapleteni in težko razumljivi, če se uporablja več zank in pogojnih stavkov. Na koncu gre za raven udobja programerja, vendar je na splošno dobro, da namesto pretirane uporabe stenografij napišete eksplicitno, berljivo in enostavno odpravljanje napak.