Kako koristiti Zip funkciju u Pythonu

How Use Zip Function Python



Ovaj članak će obuhvatiti vodič o zip funkciji dostupan u standardnoj biblioteci modula Pythona. Ova vam metoda omogućuje kombiniranje i uparivanje elemenata više ponovljivih objekata. Zatim možete pokrenuti daljnju logiku na ovim parovima. U mnogim slučajevima korištenje zip funkcije mnogo je učinkovitije i čišće od korištenja višestrukih ugniježđenih petlji.

O Zip funkciji

Kao što je ranije rečeno, zip funkcija koristi se za stvaranje parova od elemenata više iterabilnih objekata. Razmotrite donji primjer kako biste razumjeli osnovnu sintaksu i upotrebu zip funkcije:







popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka']
zatvarač= zatvarač(popis1,popis2)
ispisati (popis(zatvarač))

Prve dvije izjave u gornjem uzorku koda definiraju dva popisa koji sadrže neke elemente. Zatim se funkcija zip koristi prosljeđivanjem varijabli list1 i list2 kao argumentima. Ovo je glavna sintaksa zip funkcije. Morate samo proslijediti popise ili druge valjane uređene iterable kao argumente čije elemente želite kombinirati. Na kraju, iskaz print koristi se za dobivanje rezultata zip varijable. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:



[('a', 'jabuka'), ('b', 'kugla'), ('c', 'mačka')]

Imajte na umu da funkcija zip vraća objekt zip vrste, a ne popis. Morate ga pretvoriti u tip koji se može ponavljati, kao što je prikazano u gornjoj izjavi o ispisu.



Jednostavno rečeno, funkcija zip preuzima elemente istog indeksa s dva popisa i kombinira ih kao par u podružnici. Dakle, 0. element iz liste1 kombinira se s 0. elementom liste2, prvi element iz liste1 kombinira se s prvim elementom liste2 itd. Zip funkcija se pomiče slijeva nadesno, a hrpa koja sadrži uparene elemente ima isti indeks kao i elementi pohranjeni u njima.





Korištenje Zip -a kada Iterables nemaju isti broj elemenata

U gore navedenom primjeru oba popisa imaju jednak broj elemenata. U slučaju da imate posla s nekim kodom gdje oba popisa nemaju isti broj elemenata, funkcija zip će se zaustaviti na zadnjem elementu popisa koji ima najmanji broj elemenata.

U donjem primjeru funkcija zip će se zaustaviti na elementu c, bez obzira na to što list2 ima još jedan element.



popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka', 'lutka']
zatvarač= zatvarač(popis1,popis2)
ispisati (popis(zatvarač))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

[('a', 'jabuka'), ('b', 'kugla'), ('c', 'mačka')]

Prilikom upotrebe Zip funkcije možete koristiti više od dva Iterablea

Obično se funkcija zip koristi za usporedbu dva iterabilna objekta. Međutim, možete poslati bilo koji broj iterabilnih parametara kao argumente funkciji zip. Načelo zaustavljanja na posljednjem elementu najkraćeg popisa i dalje će biti primjenjivo.

popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka', 'lutka']
popis3= ['5', '3']
zatvarač= zatvarač(popis1,popis2,popis3)
ispisati (popis(zatvarač))

Nakon pokretanja gore spomenutog uzorka koda, kao rezultat biste trebali dobiti sljedeći izlaz:

[('a', 'jabuka', '5'), ('b', 'kugla', '3')]

Stvaranje pojedinačnih popisa od objekta Zip vrste

Ako već imate zip objekt, možete ga koristiti za ponovno popunjavanje pojedinačnih popisa koji su se ranije koristili pri prvom pozivanju zip funkcije.

popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka', 'lutka']
popis3= ['5', '3']
zatvarač= zatvarač(popis1,popis2,popis3)
l1,l2,l3= zatvarač(*zatvarač)
ispisati (popis(l1), popis(l2), popis(l3))

Nakon pokretanja gore spomenutog uzorka koda, kao rezultat biste trebali dobiti sljedeći izlaz:

['a', 'b'] ['jabuka', 'kugla'] ['5', '3']

U gornjem uzorku koda, zip objekt se deflacionira pomoću operatora *. Iscrpljeni rezultati zatim se ubacuju u drugu funkciju poziva do zip -a koja stvara izvorne popise. Imajte na umu da možda nećete vratiti sve elemente na izvorne popise ako su popisi nejednake duljine korišteni pri prvom stvaranju zip objekta.

Korištenje Zip -a ako želite zadržati elemente koji nisu najduži

U više gore navedenih primjera možda ste primijetili da se funkcija zip prema zadanim postavkama zaustavlja na posljednjem elementu najkraćeg ponavljanja. Što ako želite da nastavi ponavljati dok ne dosegne zadnji element najdužeg iterabilnog koraka?

U tom slučaju morat ćete koristiti metodu zip_longth () iz Pythonovog itertools modula. Radi isto kao i funkcija zip, s jednom malom razlikom što se zaustavlja na posljednjem elementu najdužeg iterabilnog tipa.

iz itertools uvozzip_najduži
popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka', 'lutka']
popis3= ['5', '3']
zatvarač=zip_najduži(popis1,popis2,popis3)
ispisati (popis(zatvarač))

Nakon pokretanja gore spomenutog uzorka koda, kao rezultat biste trebali dobiti sljedeći izlaz:

[('a', 'jabuka', '5'), ('b', 'lopta', '3'), ('c', 'mačka', ništa), (Ništa, 'lutka', Ništa) ]

Nedostajuće vrijednosti popunjavaju se kao objekti tipa None. Također možete navesti vlastitu vrijednost za popunjavanje prosljeđivanjem dodatnog argumenta fillvalue u metodu zip_longth.

iz itertools uvozzip_najduži
popis1= ['do', 'b', 'c']
popis2= ['jabuka', 'lopta', 'mačka', 'lutka']
popis3= ['5', '3']
zatvarač=zip_najduži(popis1,popis2,popis3,fillvalue='moja_vrijednost')
ispisati (popis(zatvarač))

Nakon pokretanja gore spomenutog uzorka koda, kao rezultat biste trebali dobiti sljedeći izlaz:

[('a', 'jabuka', '5'), ('b', 'lopta', '3'), ('c', 'mačka', 'moja_vrijednost'), ('moja_value', 'lutka ',' my_value ')]

Zaključak

Zip funkcija može se oponašati pomoću nekih petlji i uvjeta. Međutim, pomaže u održavanju koda organiziranim i čistijim uklanjanjem nepotrebne opširnosti i ponavljajućih izjava.