Pro smyčku v Pythonu
Příkaz for loop v Pythonu postupně iteruje přes členy jakéhokoli 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 spouštění iterace. Ačkoli existují způsoby, jak zajistit, aby se jeho chování chovalo stejně jako v ostatních programovacích jazycích (v tomto článku nebude zahrnuto). Můžete také vykonávat určitou kontrolu nad smyčkami pomocí příkazů jako pokračovat, zlomit, projít atd. Níže je jednoduchý příklad smyčky for v Pythonu:
proXv rozsah(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ž zkrácený / výstižný způsob psaní víceřádkových smyček v příkazu s jedním řádkem. 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 do něj.
čísla= [XproXv rozsah(10)]
tisk (čísla)
Pochopení seznamu vždy vytvoří nový seznam a nemění původní iterace použité ve výrazu. Typický výraz pro porozumění seznamu musí mít klauzuli for a může za ní následovat podmíněné 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= []
proXv rozsah(10):
čísla.připojit(X)
tisk (čísla)
Výkon a čitelnost
Porozumění seznamu je rychlejší než u smyček. Pokud však neopakujete více než stovky tisíc položek, nezaznamenáte zásadní zlepš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 není dosažení maximálního výkonu pro váš program naprostou nezbytností.
Příklad: Použití syntaxe porozumění seznamu se slovníky a sadami
Slovník pythonu je kolekce prvků definovaných v párech klíč – hodnota, zatímco sada je kolekce jedinečných hodnot, kde nejsou povoleny duplikáty. Porozumění seznamu lze použít také se slovníky a sadami Pythonu. Syntaxe se mírně liší, místo zabalení výrazu do hranatých závorek teď budete muset použít složená závorka. Místo nového seznamu také získáte nový objekt slovníku / sady.
data= {'město':'New York', 'název':'john doe'}
formatted_data= {k: v.titul() prok,protivdata.položky()}
tisk (formatted_data)
Výše uvedený příklad převede hodnoty řetězců na velká písmena a vytvoří nový slovník s názvem formatted_data, jehož výstupem bude: {‘city‘: ‘New York‘, ‘name‘: ‘John Doe‘}. Můžete také změnit slovník / nastavit na místě zadáním existující proměnné slovníku na levé straně.
data= {'město':'New York', 'název':'john doe'}data= {k: v.titul() prok,protivdata.položky()}
tisk (data)
Bez použití porozumění slovníku by kód vypadal takto:
data= {'město':'New York', 'název':'john doe'}formatted_data= {}
prok,protivdata.položky():
formatted_data[k] =proti.titul()
tisk (formatted_data)
Protože 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 rovnátek.
Příklad: Více pro smyčky v seznamu s porozuměním
Výše uvedený příklad porozumění seznamu je základní a používá jediný příkaz. Níže je uveden příklad, který používá pro smyčky násobek a příkaz podmíněné if.
přídavná jména= ['Disk', 'Eoan', 'Ohnisková', 'Artful']zvířata= ['Dingo', 'Hermelín', 'Jáma', 'Bobr']
kódová jména= [x +''+ aproXvpřídavná jménaproavzvířata-lia.začíná s(X[0])]
tisk (kódová jména)
Kód zobrazí jako výstup [„Disco Dingo“, „Eoan Ermine“, „Focal Fossa“]. Dva pro smyčky procházejí adjektiva a seznamy zvířat a jejich členové jsou spojeni pomocí mezery, pouze pokud je první písmeno obou slov stejné. Bez použití porozumění seznamu by kód vypadal takto:
přídavná jména= ['Disk', 'Eoan', 'Ohnisková', 'Artful']zvířata= ['Dingo', 'Hermelín', 'Jáma', 'Bobr']
kódová jména= []
proXvpřídavná jména:
proavzvířata:
-lia.začíná s(X[0]):
kódová jména.připojit(x +''+ a)
tisk (kódová jména)
Příklad: Seznam s porozuměním s klauzulí if-else
Následující příklad ukazuje použití příkazů if a else při porozumění seznamu.
number_list= [1, 2, 3, 4]another_list= [5, 6, 7, 8]
výsledek= [Skutečný -li (x + y)%2 == 0 jiný Nepravdivé proXvnumber_listproavanother_list]
tisk (výsledek)
Při procházení dvěma seznamy výše uvedené porozumění seznamu kontroluje, zda je součet dvojice prvků rovnoměrný nebo ne. Spuštění výše uvedeného kódu vám ukáže jako výstup [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True]. Bez použití porozumění seznamu by kód vypadal takto:
number_list= [1, 2, 3, 4]another_list= [5, 6, 7, 8]
výsledek= []
proXvnumber_list:
proavanother_list:
-li (x + y)%2 == 0:
výsledek.připojit(Skutečný)
jiný:
výsledek.připojit(Nepravdivé)
tisk (výsledek)
Závěr
Porozumění seznamu poskytuje pěkný způsob, jak psát čisté a stručné smyčkové příkazy. Mohou se však rychle stát složitými a obtížně pochopitelnými, pokud je použito více smyček a podmíněných příkazů. Nakonec to přijde na úroveň pohodlí programátora, ale obecně je dobré psát explicitní, čitelný a snadno laditelný kód místo nadměrného používání zkratek.