Python

Zoznam porozumení v Pythone

Zoznam porozumení v Pythone
Porozumenia zoznamu sa v Pythone často používajú na písanie jednoriadkových príkazov, ktoré vytvárajú nový zoznam alebo slovník opakovaním opakovateľného objektu. Tento článok vysvetlí, ako používať zoznamy súborov v Pythone, počnúc základným vysvetlením fungovania slučiek v Pythone.

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.

Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...