Jak používat porozumění seznamu Python (a kdy je nepoužívat)

  • Brian Curtis
  • 0
  • 2374
  • 9
reklama

Možná jste slyšeli o porozumění seznamu Pythona. Možná je to dokonce něco, co jste použili, aniž byste to opravdu pochopili. Nyní je čas se učit, protože pokrýváme vše, co potřebujete vědět o porozumění seznamu v Pythonu.

Než začnete, stojí za to se osvěžit o tom, jak pole a seznamy fungují v Pythonu Jak fungují pole a seznamy v Pythonu Jak fungují pole a seznamy v Pythonu Pole a seznamy jsou některé z nejužitečnějších datových struktur v programování - i když je používá jen málo lidí na jejich plný potenciál. a jak používat slovníky Python Slovník Python: Jak jej můžete použít k psaní lepšího kódu Slovník Python: Jak jej můžete použít k psaní lepšího kódu Myslete na slovník Python jako neuspořádané sady párů klíč-hodnota. V tomto článku vám představíme práci s nimi a jejich použití ke zlepšení vašeho Pythonova kódu. .

Co je to porozumění seznamu Python?

Seznam porozumění zní komplexně, ale ve skutečnosti tomu tak není. V Pythonu je to jednoduše rychlý způsob filtrování nebo upřesnění seznamu na základě některých kritérií.

To vám ušetří, když budete muset napsat několik řádků kódu (zejména pokud už jste ve smyčce), a zachová tak čitelnost kódu..

Buďte však opatrní, protože porozumění seznamu není vždy odpověď. Je snadné se nechat unést a psát složitá porozumění, která jsou těžko čitelná. Někdy je psaní více kódu lepší, zejména pokud to napomáhá čitelnosti. Držte se jednoduchých úkolů a udržujte kód na jediné odpovědnosti.

Jak používat seznam porozumění v Pythonu

Poznámka: Všechny tyto příklady používají Python 3.6. Pokud si nejste jisti rozdíly mezi Python 3 a Python 2, přečtěte si naše nejčastější dotazy týkající se Pythonu Nejčastější dotazy o programování v Pythonu Nejčastější dotazy týkající se programování v Pythonu V tomto článku vás provedeme vše, co potřebujete vědět o Python jako začátečník. , kde se zabýváme touto otázkou a další.

Zvažte tento kousek kódu, který zkopíruje pole a změní každé písmeno v tomto poli na velká písmena. To se provádí opakováním každé položky v poli:

písmena = ['a', 'b', 'c', 'd'] tisk (písmena) upper_letters = [] pro písmeno v písmenech: result = letter.upper () upper_letters.append (result) print (upper_letters)

Teď je tu stejná přesná logika, kromě toho, že se provádí v jednom řádku kódu pomocí základního porozumění seznamu Pythonu:

písmena = ['a', 'b', 'c', 'd'] tisk (písmena) upper_letters = [x.upper () pro x písmeny] tisk (upper_letters) 

Jak vidíte, výsledek je úplně stejný, ale tento proces zahrnuje podstatně více kódu bez porozumění seznamu.

Přerušme tento jednoduchý příklad.

Tento příklad vytvoří seznam s názvem písmena. Tím se ukládají malá písmena “A”, “b”, “C”, a “d”. Předpokládejme, že chcete, aby všechny tyto prvky seznamu byly velkými písmeny? No, bez porozumění seznamu, musíte vytvořit nový seznam pro uložení výsledku (tzv upper_letters), opakujte každý prvek v písmena seznam, převést každé písmeno (a uložit do výsledek-volitelný, ale osvědčený postup) a poté připojte velká písmena k novému seznamu. Jak hodně práce!

Srozumitelnost seznamu je téměř přesně ekvivalentní alternativě smyčky. Efektivně to říká “pro každé písmeno v seznamu písmen je převeďte na velká písmena a vraťte výsledek jako nový seznam.”

Porozumění seznamu může fungovat pouze na seznamech a musí vrátit nový seznam. Pojďme hlouběji.

Rozumí se seznamem se třemi částmi (třetí část se věnujeme níže). Porozumění seznamu musí začínat a končit hranatými závorkami ([ a ]). Takto byl navržen a umožňuje Pythonu vědět, že budete pracovat se seznamem.

V hranatých závorkách musíte začít s výsledkem. To je to, co chcete dělat s každým prvkem seznamu.

Ve výše uvedeném příkladu převede následující kód každý prvek (označený názvem proměnné) X) na velká písmena pomocí horní() metoda, která je součástí základní knihovny Python:

[x.upper () # se nespustí, v tomto bodě pouze polovina porozumění

Dále musíte Pythonu sdělit, na kterém seznamu bude pracovat, a každému jednotlivému prvku přiřadit proměnnou. Tohle je přesně tak stejné jako smyčka for v případě dlouhého větru:

pro písmena x

Pokaždé, když smyčka prochází seznamem, hodnota X se změní na jakýkoli aktuální prvek. Začne to jako “A”, a pak “b”, a tak dále.

Pokud to dáte dohromady (a přiřadíte to proměnné nazvané upper_letters), budete hotovi:

upper_letters = [x.upper () pro x písmeny]

Nyní, upper_letters bude obsahovat seznam velkých písmen začínající na “A”, a pak “B” a tak dále.

Třetí část seznamu porozumění v Pythonu

Jak jsme již zmínili výše, je tu třetí část, která obsahuje seznam porozumění.

Jakmile provedete výše uvedené dva kroky, můžete zahrnout volitelnou podmínku. Je to jako používat -li prohlášení k vyjádření “Udělejte mi nový seznam založený na tomto starém seznamu, ale pouze prvky, které splňují moje kritéria”.

Vypadá to takto:

věky = [1, 34, 5, 7, 3, 57, 356] tisk (věky) old_ages = [x pro x ve věku, pokud x> 10] tisk (old_ages)

Tento příklad používá nový seznam s názvem věky. old_ages seznam se sestavuje pomocí porozumění seznamu. -li podmínka na konci znamená, že do nového seznamu budou vloženy pouze prvky seznamu, které splňují kritéria. V tomto příkladu jsou povoleny všechny věkové skupiny vyšší než deset.

Kdy nepoužit porozumění seznamu Python

Pochopení seznamu je úžasné, jakmile to zvládnete, ale není to užitečné za všech okolností. Pravděpodobně byste neměli používat, když potřebujete více než jednu podmínku:

old_ages = [x pro x ve věku, pokud x> 10 a x < 100 and x is not None]

Tento kód funguje, ale začíná to být dlouhé a matoucí. Podobně nemusí fungovat nic jiného než jednoduché volání funkce. V tomto příkladu se zobrazí chyba:

písmena = ['a', 'b', 'c', 'd', 2] tisk (písmena) upper_letters = [x.upper () pro x v písmenech] print (upper_letters)

Toto je dokonale platný kód, ale protože nemůžete velké číslo, nebude to fungovat. Toto je jeden případ, kdy je delší smyčka skutečně výhodnější, protože budete moci udělat nějaké zpracování výjimek:

letters = ['a', 'b', 'c', 'd', 1] print (letters) upper_letters = [] pro písmeno v písmenech: try: result = letter.upper () upper_letters.append (výsledek) s výjimkou AttributeError: pass # nedělat nic tisku (upper_letters)

Začněte používat seznamy Python List

Nyní, když víte, jak snadné je porozumění seznamu v Pythonu, není důvod jej nepoužívat. Jen si pamatujte, aby to bylo jednoduché, a zvažte především čitelnost.

Možná ovládáte Arduino s Pythonem Jak programovat a ovládat Arduino s Pythonem Jak programovat a ovládat Arduino S Pythonem Bohužel není možné Arduino přímo naprogramovat v Pythonu, ale můžete jej ovládat přes USB pomocí Pythonu program. Zde je návod. , nebo co DIY Python síťová bezpečnostní kamera DIY Pan a Tilt síťová bezpečnostní kamera s Raspberry Pi DIY Pan a Tilt síťová bezpečnostní kamera s Raspberry Pi Naučte se, jak udělat vzdáleně viditelnou bezpečnostní kameru s naklápěním a nakláněním pomocí Raspberry Pi. Tento projekt lze dokončit ráno pouze s nejjednoduššími částmi. ?




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.