Piton

A Zip függvény használata a Pythonban

A Zip függvény használata a Pythonban
Ez a cikk a „zip” funkció útmutatóját ismerteti, amely a Python szabványos modulkönyvtárában található. Ez a módszer lehetővé teszi több iterálható objektum elemeinek kombinálását és párosítását. Ezután további logikát futtathat ezeken a párokon. Sok esetben a „zip” funkció használata sokkal hatékonyabb és tisztább, mint a több, egymásba ágyazott „for” hurok használata.

A Zip funkcióról

Mint korábban említettük, a „zip” függvény segítségével párokat hozhatunk létre több iterálható objektum elemeiből. Vegye figyelembe az alábbi példát a zip függvény alapvető szintaxisának és használatának megértéséhez:

list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska"]
zip = zip (lista1, lista2)
nyomtatás (lista (cipzáras))

A fenti kódminta első két állítása két, néhány elemet tartalmazó listát határoz meg. Ezután a „zip” függvényt a „list1” és „list2” változók argumentumként történő továbbításával használják. Ez a „zip” funkció fő szintaxisa. Csak azokat a listákat vagy más érvényes rendezett iterable-eket kell átadni argumentumként, amelyek elemeit kombinálni szeretné. Végül a nyomtatási utasítással kapjuk meg a „zip” változó kimenetét. A fent említett kódminta futtatása után a következő kimenetet kell kapnia:

[('a', 'alma'), ('b', 'labda'), ('c', 'macska')]

Vegye figyelembe, hogy a „zip” függvény egy „zip” típusú objektumot ad vissza, nem pedig listát. Meg kell konvertálni iterálható típusra, amint az a fenti nyomtatási utasításban látható.

Egyszerűbben fogalmazva, a „zip” függvény ugyanazon index elemeit veszi fel két listáról, és párosítja őket egy párban. Tehát a „list1” 0. elemét a „list2” 0. elemével, a „list1” 1. elemét a „list2” 1. elemével és így tovább. A zip funkció balról jobbra mozog, és a párosított elemeket tartalmazó index indexe megegyezik a bennük tárolt elemekkel.

A Zip használata, ha az Iterables nem azonos számú elemet tartalmaz

A fenti példában mindkét listának azonos számú eleme van. Abban az esetben, ha olyan kóddal van dolgod, ahol mindkét lista nem azonos elemszámmal rendelkezik, a „zip” funkció a lista utolsó eleménél fog megállni, ahol a legkisebb az elemszám.

Az alábbi példában a „zip” függvény leáll a „c” elemnél, függetlenül attól, hogy a „list2” még egy elemet tartalmaz.

list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska", "baba"]
zip = zip (lista1, lista2)
nyomtatás (lista (cipzáras))

A fent említett kódminta futtatása után a következő kimenetet kell kapnia:

[('a', 'alma'), ('b', 'labda'), ('c', 'macska')]

A Zip funkció használatakor kettőnél több iterable használható

Általában a „zip” függvény két iterálható objektum összehasonlítására szolgál. Bármennyi iterable-t átadhat argumentumként a „zip” függvénynek. A legrövidebb lista utolsó eleménél való megállás elve továbbra is alkalmazandó.

list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska", "baba"]
list3 = ["5", "3"]
zip = zip (lista1, lista2, lista3)
nyomtatás (lista (cipzáras))

A fent említett kódminta futtatása után a következő kimenetet kell kapnia ennek eredményeként:

[('a', 'alma', '5'), ('b', 'labda', '3')]

Egyedi listák létrehozása egy zip típusú objektumból

Ha már rendelkezik „zip” objektummal, akkor újratöltheti azokat az egyedi listákat, amelyeket korábban a zip függvény első hívásakor használtak.

list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska", "baba"]
list3 = ["5", "3"]
zip = zip (lista1, lista2, lista3)
l1, l2, l3 = cipzár (* cipzáras)
nyomtatás (lista (l1), lista (l2), lista (l3))

A fent említett kódminta futtatása után a következő kimenetet kell kapnia ennek eredményeként:

['a', 'b'] ['alma', 'labda'] ['5', '3']

A fenti kódmintában a „zip” objektum leeresztése a „*” operátor segítségével történik. A leeresztett eredményeket ezután egy másik zip-hívás funkcióba vezetik, amely eredeti listákat hoz létre. Vegye figyelembe, hogy előfordulhat, hogy nem minden elem kerül vissza az eredeti listákba, ha egyenlőtlen hosszúságú listákat használtak a „zip” objektum első létrehozásakor.

A Zip használata, ha meg akarja tartani az elemeket a leghosszabb iterálhatóságtól

Több fenti példában észrevehette, hogy a „zip” funkció alapértelmezés szerint a legrövidebb időn belül iterálható utolsó elemnél áll meg. Mi van, ha azt akarja, hogy folytassa az iterációt, amíg el nem éri a leghosszabb iterálható érték utolsó elemét?

Ilyen esetben a „zip_longest ()” metódust kell használnia a Python „itertools” moduljából. Ugyanúgy működik, mint a „zip” funkció, egy apró különbséggel, hogy a leghosszabb iterálható típus utolsó eleménél áll meg.

az itertoolokból importálja a zip_longest-et
list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska", "baba"]
list3 = ["5", "3"]
zip = zip_longest (lista1, lista2, lista3)
nyomtatás (lista (cipzáras))

A fent említett kódminta futtatása után a következő kimenetet kell kapnia ennek eredményeként:

[('a', 'alma', '5'), ('b', 'labda', '3'), ('c', 'macska', Nincs), (Nincs, 'baba', Nincs) ]

A hiányzó értékek „Nincs” típusú objektumként kerülnek feltöltésre. Azt is megadhatja, hogy kitöltse saját értékét, ha egy extra „fillvalue” argumentumot továbbít a „zip_longest” metódusra.

az itertoolokból importálja a zip_longest-et
list1 = ["a", "b", "c"]
list2 = ["alma", "labda", "macska", "baba"]
list3 = ["5", "3"]
zipped = zip_longest (lista1, lista2, lista3, fillvalue = "my_value")
nyomtatás (lista (cipzáras))

A fent említett kódminta futtatása után a következő kimenetet kell kapnia ennek eredményeként:

[('a', 'alma', '5'), ('b', 'labda', '3'), ('c', 'macska', 'én_értékem'), ('én_értékem', 'baba' ',' my_value ')]

Következtetés

A zip függvény emulálható néhány ciklus és feltétel utasítás segítségével. Azonban segít a kód rendszerezettségének és tisztaságának megőrzésében azáltal, hogy eltávolítja a felesleges részletességet és az ismétlődő állításokat.

Az X-Mouse Button Control segítségével az egér gombjait másképp alakíthatja át a különböző szoftvereknél
Lehet, hogy szüksége van egy eszközre, amely megváltoztathatja az egér vezérlését minden használt alkalmazással. Ebben az esetben kipróbálhatja az úgy...
Microsoft Sculpt Touch vezeték nélküli egér áttekintés
Nemrég olvastam a Microsoft Sculpt Touch vezeték nélküli egér és úgy döntött, hogy megveszi. Egy ideig használat után úgy döntöttem, hogy megosztom ve...
AppyMouse képernyős Trackpad és egérmutató a Windows táblagépekhez
A táblagép-felhasználók gyakran hiányolják az egérmutatót, különösen akkor, ha szokták használni a laptopokat. Az érintőképernyős okostelefonok és táb...