Sorolja fel a Python megértéseit

List Comprehensions Python



A listaértéseket gyakran használják a Pythonban egysoros állítások írására, amelyek új listát vagy szótárat hoznak létre egy iterálható objektumon keresztül. Ez a cikk elmagyarázza, hogyan kell használni a listaértéseket a Pythonban, kezdve azzal, hogy alaposan megmagyarázzuk, hogyan működnek a hurkok a Pythonban.

A Loop Pythonban

A for loop utasítás Pythonban szekvenciálisan iterál bármely objektum, lista, karakterlánc stb. Tagjai fölött. Más programozási nyelvekkel összehasonlítva szintaxisa sokkal tisztább, és nem igényli az iterációs lépések manuális meghatározását és az iteráció elindítását. Bár vannak módok arra, hogy viselkedését ugyanazzá tegyék, mint más programozási nyelvek (ebben a cikkben nem lesz szó). A hurkok felett is gyakorolhat bizonyos utasításokat, például folytassa, szünet, átadás stb.







számáraxban ben hatótávolság(10):
nyomtatás(x)

A fenti for ciklus tíz számot nyomtat ki 0 -tól kezdve 9 -ig.



Lista megértések

A lista megértése nem más, mint gyorsírás / tömör módszer többsoros ciklusok írására egysoros utasításban. Az alábbi listaértési példa egy új listát hoz létre [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] néven, az x összes értékének szerepeltetésével.



számokat= [xszámáraxban ben hatótávolság(10)]
nyomtatás (számokat)

Ne feledje, hogy a listaértés mindig új listát hoz létre, és nem módosítja a kifejezésben használt eredeti iterabereket. Egy tipikus listaértési kifejezésnek rendelkeznie kell for -záradékkal, és követheti az if és a feltételes állítások. A lista megértésének használata nélkül a fenti példa a következőképpen íródik:





számokat= []
számáraxban ben hatótávolság(10):
számokat.mellékel(x)

nyomtatás (számokat)

Teljesítmény és olvashatóság

A lista megértése gyorsabb, mint a ciklusok esetében. Ha azonban nem több százezer elemet iterál, nem fog észrevenni jelentős teljesítményjavulásokat. Míg a listaértés tömör módot biztosít a ciklusok írására, a bonyolult kifejezések a kód rossz olvashatóságához és a bőbeszédűséghez vezethetnek. Fontos, hogy a kód olvasható legyen, kivéve, ha a maximális teljesítmény elérése feltétlenül szükséges a program számára.

Példa: Listaértések szintaxisának használata szótárakkal és készletekkel

A python szótár kulcsérték párokban meghatározott elemek gyűjteménye, míg a készlet egyedi értékek gyűjteménye, ahol az ismétlődések nem megengedettek. A listaértések a Python szótárakkal és készletekkel is használhatók. A szintaxis kissé eltér, ahelyett, hogy a kifejezést szögletes zárójelekbe csomagolná, most göndör zárójeleket kell használnia. Emellett új szótár / halmaz objektumot is kap egy új lista helyett.



adat= {'város':'New York', 'név':'gipsz Jakab'}

formázott_adatok= {k: v.cím() számáranak nek,vban benadat.tételeket()}

nyomtatás (formázott_adatok)

A fenti példa a karakterláncok értékeit címtáblává alakítja, és új szótárat hoz létre formatted_data néven, amelynek kimenete a következő lesz: {'city': 'New York', 'name': 'John Doe'}. A szótárt / készletet helyben is megváltoztathatja, ha megadja a meglévő szótárváltozót a bal oldalon.

adat= {'város':'New York', 'név':'gipsz Jakab'}

adat= {k: v.cím() számáranak nek,vban benadat.tételeket()}

nyomtatás (adat)

A szótári szövegértés használata nélkül a kód így nézne ki:

adat= {'város':'New York', 'név':'gipsz Jakab'}

formázott_adatok= {}

számáranak nek,vban benadat.tételeket():
formázott_adatok[nak nek] =v.cím()

nyomtatás (formázott_adatok)

Mivel nincsenek kulcs-érték párok a halmazokban, a halmazértést ugyanúgy lehet definiálni, mint a lista megértését. Az egyetlen különbség a göndör fogszabályozó használata.

Példa: Többszörös hurkokhoz a lista megértésében

A fentebb említett listaértési példa alapvető, és egyetlen kifejezést használ. Az alábbiakban bemutatunk egy példát, amely többszörös ciklusokat és feltételes if utasítást használ.

melléknevek= ['Korong', 'Eoan', 'Fokális', 'Ügyes']

állatok= ['Dingó', 'Hermelin', 'A gödör', 'Hód']

kódnevek= [x +''+ ésszámáraxban benmelléknevekszámáraésban benállatokhaés.kezdettel(x[0])]

nyomtatás (kódnevek)

A kód kimenetként a [’Disco Dingo’, ’Eoan Ermine’, ’Focal Fossa’] értékeket fogja megjeleníteni. A hurkokhoz tartozó kettő átmegy a mellékneveken és az állatok listáján, és tagjaik szóközzel vannak összekapcsolva, csak akkor, ha mindkét szó első betűje azonos. A listaértések használata nélkül a kód így nézne ki:

melléknevek= ['Korong', 'Eoan', 'Fokális', 'Ügyes']
állatok= ['Dingó', 'Hermelin', 'A gödör', 'Hód']

kódnevek= []

számáraxban benmelléknevek:
számáraésban benállatok:
haés.kezdettel(x[0]):
kódnevek.mellékel(x +''+ és)

nyomtatás (kódnevek)

Példa: Listaértés if-else záradékkal

Az alábbi példa az if és else utasítások használatát mutatja a listaértésekben.

szám_lista= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]

eredmény= [Igaz ha (x + y)%2 == 0 más Hamis számáraxban benszám_listaszámáraésban benother_list]

nyomtatás (eredmény)

Miközben két listát végiglapoz, a fenti listaértés ellenőrzi, hogy az elempár összege páros -e vagy sem. A fenti kód futtatásával [Igaz, hamis, igaz, hamis, hamis, igaz, hamis, igaz, igaz, hamis, igaz, hamis, hamis, igaz, hamis, igaz] jelenik meg kimenetként. A listaértés használata nélkül a kód így nézne ki:

szám_lista= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]
eredmény= []

számáraxban benszámlista:
számáraésban benother_list:
ha (x + y)%2 == 0:
eredmény.mellékel(Igaz)
más:
eredmény.mellékel(Hamis)

nyomtatás (eredmény)

Következtetés

A listaértések szép módszert kínálnak a tiszta és tömör ciklusjelentések írására. Ezek azonban gyorsan bonyolulttá és nehezen érthetővé válnak, ha több ciklust és feltételes utasításokat használnak. Végül a programozó kényelmi szintjéről van szó, de általában jó ötlet explicit, olvasható és könnyen hibakereshető kódot írni a túlzott gyorsírás használata helyett.