Kako uporabljati funkcijo Zip v Pythonu

How Use Zip Function Python



Ta članek bo zajemal vodnik po funkciji zip, ki je na voljo v standardni knjižnici modulov Python. Ta metoda vam omogoča združevanje in združevanje elementov več ponovljivih predmetov. Nato lahko na teh parih zaženete dodatno logiko. V mnogih primerih je uporaba funkcije zip veliko učinkovitejša in čistejša od uporabe več ugnezdenih zank.

O funkciji Zip

Kot smo že omenili, se funkcija zip uporablja za ustvarjanje parov iz elementov več ponovljivih predmetov. Za razumevanje osnovne sintakse in uporabe funkcije zip upoštevajte spodnji primer:







seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka']
z zadrgo= zadrgo(seznam1,seznam2)
tiskanje (seznam(z zadrgo))

Prvi dve izjavi v zgornjem vzorčnem kodu opredeljujeta dva seznama, ki vsebujeta nekaj elementov. Nato se funkcija zip uporabi kot podajanje spremenljivk list1 in list2 kot argumentov. To je glavna sintaksa funkcije zip. Sezname ali druge veljavne urejene iterable morate predati kot argumente, katerih elemente želite združiti. Nazadnje se izjava print uporabi za pridobitev izhoda zip -spremenljivke. Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:



[('a', 'jabolko'), ('b', 'žoga'), ('c', 'mačka')]

Upoštevajte, da funkcija zip vrne objekt vrste zip in ne seznam. Morate ga pretvoriti v tip za ponavljanje, kot je prikazano v zgornjem stavku print.



Preprosto povedano, funkcija zip pobere elemente istega indeksa z dveh seznamov in jih združi kot par v naboru. Tako je 0. element iz seznama1 kombiniran z 0. elementom seznama2, prvi element iz seznama1 je kombiniran s prvim elementom seznama2 itd. Zip funkcija se premika od leve proti desni in nabor, ki vsebuje seznanjene elemente, ima enak indeks kot elementi, shranjeni v njih.





Uporaba Zip -a, če Iterables nimajo enakega števila elementov

V zgornjem primeru imata oba seznama enako število elementov. Če imate opravka z neko kodo, kjer oba seznama nimata enakega števila elementov, se bo funkcija zip ustavila pri zadnjem elementu seznama z najmanjšim številom elementov.

V spodnjem primeru se bo funkcija zip ustavila pri elementu c, ne glede na to, da ima list2 še en element.



seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka', 'punčka']
z zadrgo= zadrgo(seznam1,seznam2)
tiskanje (seznam(z zadrgo))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:

[('a', 'jabolko'), ('b', 'žoga'), ('c', 'mačka')]

Pri uporabi funkcije Zip lahko uporabite več kot dve ikoni

Običajno se funkcija zip uporablja za primerjavo dveh iterabilnih predmetov. Vendar lahko funkciji zip posredujete poljubno število ponovljivih besedil kot argumente. Načelo ustavljanja pri zadnjem elementu najkrajšega seznama bo še vedno veljalo.

seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka', 'punčka']
seznam3= ['5', '3']
z zadrgo= zadrgo(seznam1,seznam2,seznam3)
tiskanje (seznam(z zadrgo))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji rezultat:

[('a', 'jabolko', '5'), ('b', 'žoga', '3')]

Ustvarjanje posameznih seznamov iz predmeta Zip Type

Če že imate zip objekt, ga lahko uporabite za ponovno naselitev posameznih seznamov, ki so bili uporabljeni že ob prvem klicu funkcije zip.

seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka', 'punčka']
seznam3= ['5', '3']
z zadrgo= zadrgo(seznam1,seznam2,seznam3)
l1,l2,l3= zadrgo(*z zadrgo)
tiskanje (seznam(l1), seznam(l2), seznam(l3))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji rezultat:

['a', 'b'] ['jabolko', 'žoga'] ['5', '3']

V zgornjem vzorcu kode je objekt zip izpraznjen z uporabo operatorja *. Izpuščeni rezultati se nato prenesejo v drugo funkcijo klica na zip, ki ustvari izvirne sezname. Upoštevajte, da morda ne boste dobili vseh elementov nazaj na izvirne sezname, če ste pri prvem ustvarjanju predmeta zip uporabili sezname neenake dolžine.

Zip, če želite, da elementi ne ostanejo najdaljši

V več zgornjih primerih ste morda opazili, da se funkcija zip privzeto ustavi pri zadnjem elementu najkrajše ponovljive točke. Kaj pa, če želite, da se ponavlja, dokler ne doseže zadnjega elementa najdaljšega ponavljanja?

V takem primeru boste morali uporabiti metodo zip_longth () iz Pythonovega modula itertools. Deluje enako kot funkcija zip, z eno majhno razliko, da se ustavi pri zadnjem elementu najdaljše ponovljive vrste.

od itertools uvozzip_longth
seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka', 'punčka']
seznam3= ['5', '3']
z zadrgo=zip_longth(seznam1,seznam2,seznam3)
tiskanje (seznam(z zadrgo))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji rezultat:

[('a', 'jabolko', '5'), ('b', 'žoga', '3'), ('c', 'mačka', nič), (nič, 'punčka', nič) ]

Manjkajoče vrednosti so poseljene kot objekti tipa None. Svojo vrednost za izpolnjevanje lahko posredujete tudi tako, da metodi zip_longth posredujete dodatni argument fillvalue.

od itertools uvozzip_longth
seznam1= ['do', 'b', 'c']
seznam2= ['jabolko', 'žoga', 'mačka', 'punčka']
seznam3= ['5', '3']
z zadrgo=zip_longth(seznam1,seznam2,seznam3,fillvalue='my_value')
tiskanje (seznam(z zadrgo))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji rezultat:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'punčka ',' my_value ')]

Zaključek

Zip funkcijo je mogoče posnemati z uporabo nekaterih zank in pogojev. Vendar pa pomaga pri ohranjanju kode urejene in čistejše, saj odstranjuje nepotrebno podrobnost in ponavljajoče se stavke.