Pre slučku v Pythone
Príkaz for loop v Pythone postupne iteruje nad členmi ľubovoľného objektu, zoznamu, reťazca atď. V porovnaní s ostatnými programovacími jazykmi je jeho syntax oveľa čistejšia a nevyžaduje ručné definovanie krokov iterácie a začatie iterácie. Aj keď existujú spôsoby, ako upraviť jeho správanie ako v iných programovacích jazykoch (v tomto článku sa nebudeme zaoberať). Určitú kontrolu nad slučkami môžete tiež vykonať pomocou príkazov ako pokračovať, prerušiť, odovzdať atď. Nižšie uvádzame jednoduchý príklad cyklu for v Pythone:
pre x v rozsahu (10):tlačiť (x)
Smyčka for vyššie vytlačí desať čísel začínajúcich od 0 do 9.
Uveďte porozumenie
Porozumenie zoznamu nie je nič iné ako skratkový / výstižný spôsob písania viacriadkových cyklov pre slučky v jednom riadku. 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ň.
čísla = [x pre x v rozsahu (10)]tlač (čísla)
Upozorňujeme, že s porozumením zoznamu sa vždy vytvorí nový zoznam a nezmenia sa pôvodné opakovateľné tabuľky použité vo výraze. Typický výraz s porozumením zoznamu musí mať klauzulu „pre“ a za ním môžu nasledovať podmienené výroky „ak“ a „iné“. Bez použitia porozumenia zoznamu bude vyššie uvedený príklad napísaný nasledujúcim spôsobom:
čísla = []pre x v rozsahu (10):
čísla.pripojiť (x)
tlač (čísla)
Výkon a čitateľnosť
Pochopenie zoznamu je rýchlejšie ako pri cykloch. Pokiaľ však neprechádzate iteráciami stotisíc položiek, zásadné vylepšenia výkonu si nevšimnete. Zatiaľ čo porozumenie zoznamu poskytuje stručný spôsob zápisu pre cykly, zložité výrazy môžu viesť k zlej čitateľnosti kódu a zvýšenej výrečnosti. Je dôležité udržiavať kód čitateľný, pokiaľ dosiahnutie maximálneho výkonu nie je pre váš program absolútnou nevyhnutnosťou.
Príklad: Používanie syntaxe porozumenia zoznamu s slovníkmi a množinami
Slovník python je kolekcia prvkov definovaných v pároch kľúč - hodnota, zatiaľ čo sada je kolekcia jedinečných hodnôt, kde nie sú povolené duplikáty. Zoznamové porozumenie je možné použiť aj v slovníkoch a množinách Pythonu. Syntax sa mierne líši, namiesto zalomenia výrazu do štvorcových zátvoriek teraz budete musieť použiť zložené zátvorky. Namiesto nového zoznamu tiež získate nový objekt slovníka / súboru.
data = "city": "new york", "name": "john doe"formatted_data = k: v.title () pre k, v v dátach.položky ()
tlač (formatted_data)
Vyššie uvedený príklad prevedie hodnoty reťazca na veľké a malé písmená a vytvorí nový slovník s názvom „formatted_data“, ktorého výstup bude: 'city': 'New York', 'name': 'John Doe'. Slovník alebo množinu na mieste môžete tiež zmeniť zadaním existujúcej premennej slovníka na ľavej strane.
data = "city": "new york", "name": "john doe"data = k: v.title () pre k, v v dátach.položky ()
tlač (údaje)
Bez použitia slovníka by kód vyzeral takto:
data = "city": "new york", "name": "john doe"formatted_data =
pre k, v v dátach.položky ():
formatted_data [k] = v.nadpis ()
tlač (formatted_data)
Pretože v množinách nie sú žiadne páry kľúč - hodnota, porozumenie množiny je možné definovať rovnakým spôsobom ako porozumenie zoznamu. Rozdiel je iba v použití kučeravých zátvoriek.
Príklad: Viacnásobné pre slučky v porozumení zoznamu
Vyššie uvedený príklad porozumenia zoznamu je základný a používa jediný príkaz „pre“. Nižšie je uvedený príklad, ktorý používa násobok pre slučky a podmienené vyhlásenie „ak“.
prídavné mená = ["Disco", "Eoan", "Focal", "Artful"]zvieratá = ["Dingo", "Ermine", "Fossa", "Bobor"]
krycie mená = [x + "" + y pre x v adjektívach pre y u zvierat, ak y.začína sa (x [0])]
tlač (krycie mená)
Tento kód zobrazí ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] ako výstup. Dve slučky for prechádzajú cez zoznamy „prídavných mien“ a „zvierat“ a ich členovia sú spojení pomocou medzery, iba ak je prvé písmeno oboch slov rovnaké. Bez použitia zoznamov by kód vyzeral takto:
prídavné mená = ["Disco", "Eoan", "Focal", "Artful"]zvieratá = ["Dingo", "Ermine", "Fossa", "Bobor"]
krycie mená = []
pre x v prídavných menách:
pre y u zvierat:
ak r.začína sa (x [0]):
krycie mená.pripojiť (x + "" + y)
tlač (krycie mená)
Príklad: Porozumenie zoznamu s klauzulou if-else
Nasledujúci príklad ukazuje použitie príkazov if a else v komplexných zoznamoch.
number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]
result = [True if (x + y)% 2 == 0 else False for x in number_list for y in another_list]
tlač (výsledok)
Pri opakovaní dvoch zoznamov vyššie uvedené porozumenie zoznamu kontroluje, či je súčet dvojice prvkov párny alebo nie. Spustenie vyššie uvedeného kódu zobrazí [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] ako výstup. Bez použitia porozumenia zoznamu by kód vyzeral takto:
number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]
výsledok = []
pre x v číselnom zozname:
pre y v another_list:
if (x + y)% 2 == 0:
výsledok.append (True)
inak:
výsledok.pridať (nepravda)
tlač (výsledok)
Záver
Zoznamové porozumenie poskytuje pekný spôsob písania čistých a výstižných príkazov slučky. Môžu sa však rýchlo stať zložitými a ťažko pochopiteľnými, ak sa použije viac cyklov a podmienené vyhlásenia. Nakoniec to príde na úroveň pohodlia programátora, ale všeobecne je dobré namiesto nadmerného používania skratiek napísať explicitný, čitateľný a ľahko laditeľný kód.