A Zip funkció használata Pythonban

How Use Zip Function Python



Ez a cikk a Python szabványos modulkönyvtárában elérhető zip funkcióval kapcsolatos útmutatót tartalmazza. 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öbbszörös, egymásba ágyazott hurkok használata.

A Zip funkcióról

Amint azt korábban említettük, a zip függvényt párok létrehozására használják több iterálható objektum elemeiből. Tekintse meg az alábbi példát a zip függvény alapvető szintaxisának és használatának megértéséhez:







lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska']
cipzárral= postai irányítószám(lista1,lista2)
nyomtatás (lista(cipzárral))

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 való átadásával használják. Ez a zip függvény fő szintaxisa. Csak listákat vagy más érvényes rendezett iterabeleket kell átadnia érvként, amelyek elemeit kombinálni szeretné. Végül a print utasítást használjuk a tömörített változó kimenetének lekérésére. A fentebb említett kódminta futtatása után a következő kimenetet kell kapnia:



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

Ne feledje, hogy a zip függvény egy zip típusú objektumot ad vissza, nem pedig egy listát. Át kell alakítania iterálható típusra, amint azt a fenti print utasítás is mutatja.



Egyszerűen fogalmazva, a zip függvény ugyanazon index elemeit veszi fel két listából, és párosítja őket egy sorban. Tehát a lista1 0. eleme kombinálva van a lista2 0. elemével, a lista 1 eleme a list2 első elemével és így tovább. A Zip függvény balról jobbra mozog, és a párosított elemeket tartalmazó sor azonos indexű, mint a bennük tárolt elemek.





A Zip használata, ha az iterálható elemek nem rendelkeznek azonos számú elemmel

A fenti példában mindkét lista egyenlő számú elemet tartalmaz. Ha olyan kóddal van dolgában, ahol mindkét lista nem azonos számú elemet tartalmaz, akkor a zip funkció a lista utolsó eleménél fog megállni, ahol a legalacsonyabb az elemek száma.

Az alábbi példában a zip függvény megáll a c elemnél, függetlenül attól, hogy a list2 -nek van még egy eleme.



lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska', 'baba']
cipzárral= postai irányítószám(lista1,lista2)
nyomtatás (lista(cipzárral))

A fentebb 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 több mint kettő használható

Általában a zip függvényt két iterálható objektum összehasonlítására használják. Mindazonáltal tetszőleges számú iterabelt átadhat argumentumként a zip függvénynek. A legrövidebb lista utolsó eleménél való megállás elve továbbra is érvényes lesz.

lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska', 'baba']
lista3= [„5”, „3”]
cipzárral= postai irányítószám(lista1,lista2,lista3)
nyomtatás (lista(cipzárral))

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

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

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

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

lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska', 'baba']
lista3= [„5”, „3”]
cipzárral= postai irányítószám(lista1,lista2,lista3)
l1,l2,l3= postai irányítószám(*cipzárral)
nyomtatás (lista(l1), lista(l2), lista(l3))

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

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

A fenti kódmintában a zip objektum leeresztése a * operátorral történik. A leeresztett eredményeket ezután egy másik hívás a zip függvénybe táplálják, amely eredeti listákat hoz létre. Ne feledje, hogy előfordulhat, hogy nem minden elem kerül vissza az eredeti listákba, ha egyenlőtlen hosszú listákat használtak a zip objektum első létrehozásakor.

A Zip használata, ha meg akarja tartani az elemeket a leghosszabb megismételhetetlenektől

A fenti több példában megfigyelhette, hogy a zip függvény alapértelmezés szerint a legrövidebb iterálható elem utolsó pontjánál áll meg. Mi van, ha azt szeretné, hogy addig folytassa az iterációt, amíg el nem éri a leghosszabb iterálható elem utolsó elemét?

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

tól től iterszerszámok importzip_longest
lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska', 'baba']
lista3= [„5”, „3”]
cipzárral=zip_longest(lista1,lista2,lista3)
nyomtatás (lista(cipzárral))

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

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

A hiányzó értékek None típusú objektumként kerülnek feltöltésre. A saját kitöltendő értékét megadhatja úgy is, hogy a zip_longest metódusnak egy extra fillvalue argumentumot ad át.

tól től iterszerszámok importzip_longest
lista1= ['nak nek', 'b', 'c']
lista2= ['alma', 'labda', 'macska', 'baba']
lista3= [„5”, „3”]
cipzárral=zip_longest(lista1,lista2,lista3,kitöltési érték='my_value')
nyomtatás (lista(cipzárral))

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

[('a', 'alma', '5'), ('b', 'labda', '3'), ('c', 'macska', 'my_value'), ('my_value', 'doll ',' my_value ')]

Következtetés

A Zip függvény emulálható néhány ciklus és feltétel utasítással. Ez azonban segít a kód rendszerezett és tisztább tartásában a felesleges bőbeszédűség és az ismétlődő állítások eltávolításával.