Zoznam porozumení v Pythone

List Comprehensions Python



Porozumenie zoznamu sa v Pythone často používa na písanie jednoriadkových príkazov, ktoré vytvárajú nový zoznam alebo slovník opakovaním iterovateľného objektu. Tento článok vysvetlí, ako používať porozumenie zoznamu v Pythone, počnúc základným vysvetlením toho, ako slučky v Pythone fungujú.

Pre slučku v Pythone

Príkaz for loop v Pythone postupne iteruje nad členmi akéhokoľvek objektu, zoznamu, reťazca atď. V porovnaní s inými programovacími jazykmi je jeho syntax oveľa čistejšia a nevyžaduje manuálne definovanie krokov iterácie a spustenie iterácie. Aj keď existujú spôsoby, ako dosiahnuť, aby bolo jeho správanie rovnaké ako v iných programovacích jazykoch (tento článok sa ním nezaoberá). Môžete tiež vykonávať určitú kontrolu nad slučkami pomocou príkazov ako pokračovať, prerušiť, prejsť atď. Nasleduje jednoduchý príklad cyklu for v Pythone:







preXv rozsah(10):
vytlačiť(X)

Cyklus for vyššie vytlačí desať čísel od 0 do 9.



Zoznam porozumení

Porozumenie zoznamu nie je nič iné ako skrátený / výstižný spôsob, ako napísať jednoriadkové slučky pre viacriadkové slučky. Nasledujúci príklad porozumenia zoznamu vytvorí nový zoznam ako [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] zahrnutím všetkých hodnôt x do neho.



čísla= [XpreXv rozsah(10)]
vytlačiť (čísla)

Uvedomte si, že porozumenie zoznamu vždy vytvorí nový zoznam a nemení pôvodné iterácie použité vo výraze. Typický výraz pre porozumenie zoznamu musí mať klauzulu for a môžu za ním nasledovať podmienečné príkazy if a else. Bez použitia porozumenia zoznamu bude vyššie uvedený príklad napísaný nasledujúcim spôsobom:





čísla= []
preXv rozsah(10):
čísla.priložiť(X)

vytlačiť (čísla)

Výkon a čitateľnosť

Porozumenie zoznamu je rýchlejšie ako pre slučky. Pokiaľ však neopakujete státisíce položiek, zásadné zlepšenia výkonu si nevšimnete. Aj keď porozumenie zoznamu poskytuje stručný spôsob zápisu pre slučky, zložité výrazy môžu viesť k zlej čitateľnosti kódu a zvýšenej výrečnosti. Je dôležité, aby bol kód čitateľný, pokiaľ dosiahnutie maximálneho výkonu nie je pre váš program absolútnou potrebou.

Príklad: Použitie syntaxe porozumenia zoznamu so slovníkmi a množinami

Python slovník je zbierka prvkov definovaných v pároch kľúč-hodnota, zatiaľ čo množina je zbierka jedinečných hodnôt, v ktorých nie sú povolené duplikáty. Pochopenie zoznamu je možné použiť aj so slovníkmi a množinami v jazyku Python. Syntax sa mierne líši, namiesto zabalenia výrazu do hranatých zátvoriek budete teraz musieť použiť zložené zátvorky. Tiež dostanete nový slovník / súbor objektu namiesto nového zoznamu.



údaje= {'mesto':„new york“, 'názov':'John Doe'}

formatted_data= {k: v.titul() prek,vvúdaje.položky()}

vytlačiť (formatted_data)

Vyššie uvedený príklad skonvertuje hodnoty reťazca na veľké písmená a vytvorí nový slovník s názvom formatted_data, ktorého výstupom bude: {'city': 'New York', 'name': 'John Doe'}. Môžete tiež zmeniť slovník / nastaviť na mieste zadaním existujúcej premennej slovníka na ľavej strane.

údaje= {'mesto':„new york“, 'názov':'John Doe'}

údaje= {k: v.titul() prek,vvúdaje.položky()}

vytlačiť (údaje)

Bez použitia porozumenia slovníka by kód vyzeral takto:

údaje= {'mesto':„new york“, 'názov':'John Doe'}

formatted_data= {}

prek,vvúdaje.položky():
formatted_data[k] =v.titul()

vytlačiť (formatted_data)

Pretože v množinách nie sú žiadne páry kľúč-hodnota, porozumenie množiny je možné definovať rovnako ako porozumenie zoznamu. Jediným rozdielom je použitie kučeravých zátvoriek.

Príklad: Viacnásobné pre slučky v zozname s porozumením

Vyššie uvedený príklad porozumenia zoznamu je základný a používa jediný príkaz. Nasleduje príklad, ktorý používa pre slučky násobok a príkaz podmieneného príkazu if.

prídavné mená= ['Disk', 'Eoan', „Ohniskové“, „Umelecké“]

zvieratá= [„Dingo“, „Hermelín“, 'Jama', „Bobor“]

kódové názvy= [x +''+ apreXvprídavné menápreavzvieratákebya.začína s(X[0])]

vytlačiť (kódové názvy)

Kód zobrazí ako výstup [„Disco Dingo“, „Eoan Ermine“, „Focal Fossa“]. Dve pre slučky prechádzajú zoznamami prídavných mien a zvierat a ich členovia sú navzájom prepojení pomocou medzery, iba ak je prvé písmeno oboch slov rovnaké. Bez použitia porozumenia zoznamu by kód vyzeral takto:

prídavné mená= ['Disk', 'Eoan', „Ohniskové“, „Umelecké“]
zvieratá= [„Dingo“, „Hermelín“, 'Jama', „Bobor“]

kódové názvy= []

preXvprídavné mená:
preavzvieratá:
kebya.začína s(X[0]):
kódové názvy.priložiť(x +''+ a)

vytlačiť (kódové názvy)

Príklad: Porozumenie zoznamu s doložkou if-else

Nasledujúci príklad ukazuje použitie príkazov if a else pri porozumení zoznamu.

number_list= [1, 2, 3, 4]
another_list= [5, 6, 7, 8]

výsledok= [Pravda keby (x + y)%2 == 0 inak Falošné preXvnumber_listpreavanother_list]

vytlačiť (výsledok)

Pri prechádzaní dvoma zoznamami porozumenie zoznamu vyššie kontroluje, či je súčet dvojice prvkov rovnomerný alebo nie. Spustenie vyššie uvedeného kódu vám ukáže ako výstup [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True]. Bez použitia porozumenia zoznamu by kód vyzeral takto:

number_list= [1, 2, 3, 4]
another_list= [5, 6, 7, 8]
výsledok= []

preXvnumber_list:
preavanother_list:
keby (x + y)%2 == 0:
výsledok.priložiť(Pravda)
inak:
výsledok.priložiť(Falošné)

vytlačiť (výsledok)

Záver

Porozumenie zoznamu ponúka príjemný spôsob, ako písať čisté a stručné príkazy cyklu. Ak sa však použijú viac slučiek a podmienené príkazy, môžu byť rýchlo zložité a ťažko pochopiteľné. Nakoniec to príde na úroveň pohodlia programátora, ale vo všeobecnosti je dobré písať explicitný, čitateľný a ľahko laditeľný kód namiesto nadmerného používania skratiek.