Krajta

Seznam vysvětlení v Pythonu

Seznam vysvětlení v Pythonu
Porozumění seznamu se v Pythonu často používá k psaní jednořádkových příkazů, které vytvářejí nový seznam nebo slovník opakováním smyčky přes iterovatelný objekt. Tento článek vysvětlí, jak používat seznamové porozumění v Pythonu, počínaje základním vysvětlením fungování smyček v Pythonu.

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.

Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...