Pro smyčku v Pythonu
Příkaz for loop v Pythonu postupně iteruje nad členy libovolného objektu, seznamu, řetězce atd. Ve srovnání s jinými programovacími jazyky je jeho syntaxe mnohem čistší a nevyžaduje ruční definování kroků iterace a zahájení iterace. I když existují způsoby, jak zajistit, aby jeho chování bylo stejné jako u ostatních programovacích jazyků (tento článek se jím nezabývá). Můžete také vykonat určitou kontrolu nad smyčkami pomocí příkazů jako continue, break, pass atd. Níže je uveden jednoduchý příklad smyčky for v Pythonu:
pro x v rozsahu (10):tisk (x)
Smyčka for výše vytiskne deset čísel od 0 do 9.
Seznam porozumění
Porozumění seznamu není nic jiného než zkratka / výstižný způsob zápisu víceřádkových smyček do jednorázového příkazu. Níže uvedený příklad porozumění seznamu vytvoří nový seznam jako [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] zahrnutím všech hodnot „x“.
čísla = [x pro x v rozsahu (10)]tisk (čísla)
Všimněte si, že porozumění seznamu vždy vytvoří nový seznam a nezmění původní iterovatelné výrazy použité ve výrazu. Typický výraz s porozuměním seznamu musí mít klauzuli „pro“ a může být následován podmíněnými příkazy „if“ a „else“. Bez použití porozumění seznamu bude výše uvedený příklad napsán následujícím způsobem:
čísla = []pro x v rozsahu (10):
čísla.připojit (x)
tisk (čísla)
Výkon a čitelnost
Porozumění seznamu je rychlejší než u smyček. Pokud však nebudete iterovat přes stovky tisíc položek, nezaznamenáte zásadní vylepšení výkonu. Zatímco porozumění seznamu poskytuje stručný způsob zápisu pro smyčky, složité výrazy mohou vést ke špatné čitelnosti kódu a zvýšené výřečnosti. Je důležité udržovat kód čitelný, pokud dosažení maximálního výkonu není pro váš program absolutní nutností.
Příklad: Použití syntaxe porozumění seznamu s slovníky a sadami
Slovník pythonu je kolekce prvků definovaných v párech klíč-hodnota, zatímco sada je sbírka jedinečných hodnot, kde nejsou povoleny duplikáty. Seznam porozumění lze použít také se slovníky a sadami Pythonu. Syntaxe se mírně liší, namísto zabalení výrazu do hranatých závorek budete nyní muset použít složené závorky. Místo nového seznamu také získáte nový objekt slovníku / sady.
data = "city": "new york", "name": "john doe"formatted_data = k: v.title () pro k, v v datech.položky ()
print (formatted_data)
Výše uvedený příklad převede řetězcové hodnoty na velká a malá písmena a vytvoří nový slovník s názvem „formatted_data“, jehož výstup bude: 'city': 'New York', 'name': 'John Doe'. Můžete také změnit slovník / sadu na místě zadáním existující proměnné slovníku na levé straně.
data = "city": "new york", "name": "john doe"data = k: v.title () pro k, v v datech.položky ()
tisk (data)
Bez použití slovníkových porozumění by kód vypadal takto:
data = "city": "new york", "name": "john doe"formatted_data =
pro k, v v datech.položky ():
formatted_data [k] = v.titul()
print (formatted_data)
Jelikož v sadách nejsou žádné páry klíč – hodnota, lze porozumění množině definovat stejným způsobem jako porozumění seznamu. Jediným rozdílem je použití složených závorek.
Příklad: Vícenásobné smyčky v porozumění seznamu
Výše uvedený příklad s porozuměním seznamu je základní a používá jediný příkaz „pro“. Níže je uveden příklad, který používá násobek pro smyčky a podmíněné prohlášení „if“.
přídavná jména = ["Disco", "Eoan", "Focal", "Artful"]zvířata = ["Dingo", "Ermine", "Fossa", "Bobr"]
krycí jména = [x + "" + y pro x v přídavných jménech pro y u zvířat, pokud y.začíná s (x [0])]
tisk (krycí jména)
Tento kód zobrazí jako výstup [„Disco Dingo“, „Eoan Ermine“, „Focal Fossa“]. Tyto dvě smyčky pro procházejí seznamy „adjektiv“ a „zvířat“ a jejich členové jsou spojeni pomocí mezery, pouze pokud je první písmeno obou slov stejné. Bez použití seznamů by kód vypadal takto:
přídavná jména = ["Disco", "Eoan", "Focal", "Artful"]zvířata = ["Dingo", "Ermine", "Fossa", "Bobr"]
krycí jména = []
pro x v přídavných jménech:
pro y u zvířat:
pokud y.začíná s (x [0]):
krycí jména.připojit (x + "" + y)
tisk (krycí jména)
Příklad: Seznam s porozuměním s klauzulí if-else
Níže uvedený příklad ukazuje použití příkazů if and else v porozumění seznamu.
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]
tisk (výsledek)
Při procházení dvěma seznamy výše uvedené porozumění seznamu kontroluje, zda je součet dvojice prvků sudý nebo ne. Spuštěním výše uvedeného kódu se vám zobrazí [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] jako výstup. Bez použití seznamu s porozuměním by kód vypadal takto:
number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]
výsledek = []
pro x v seznamu čísel:
pro y v another_list:
if (x + y)% 2 == 0:
výsledek.připojit (True)
jiný:
výsledek.připojit (False)
tisk (výsledek)
Závěr
Seznam s porozuměním poskytuje příjemný způsob psaní čistých a stručných příkazů smyčky. Mohou však být rychle složité a obtížně pochopitelné, pokud se použije více smyček a podmíněných příkazů. Nakonec jde o úroveň pohodlí programátora, ale obecně je dobré psát explicitní, čitelný a snadno laditelný kód namísto nadměrného používání zkratek.