Zip -toiminnon käyttäminen Pythonissa

How Use Zip Function Python



Tämä artikkeli kattaa oppaan zip -toiminnosta, joka on saatavana Pythonin vakiomoduulikirjastossa. Tämän menetelmän avulla voit yhdistää ja yhdistää useiden toistettavien objektien elementtejä. Voit sitten jatkaa logiikkaa näillä pareilla. Monissa tapauksissa zip -toiminnon käyttäminen on paljon tehokkaampaa ja puhtaampaa kuin useiden, sisäkkäisten silmukoiden käyttäminen.

Tietoja Zip -toiminnosta

Kuten aiemmin todettiin, zip -toimintoa käytetään parien luomiseen useiden toistettavien objektien elementeistä. Harkitse alla olevaa esimerkkiä ymmärtääksesi zip -toiminnon perussyntaksin ja käytön:







luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa']
vetoketjulla= postinumero(luettelo 1,luettelo 2)
Tulosta (lista(vetoketjulla))

Yllä olevan koodinäytteen kaksi ensimmäistä lausetta määrittävät kaksi luetteloa, jotka sisältävät joitain elementtejä. Seuraavaksi zip -toimintoa käytetään siirtämällä lista1- ja luettelo2 -muuttujat argumentteiksi. Tämä on zip -toiminnon pääsyntaksi. Sinun on vain toimitettava luettelot tai muut kelvolliset tilatut iterables argumentteina, joiden elementit haluat yhdistää. Lopuksi print -lauseketta käytetään zip -muuttujan tuloksen saamiseen. Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:



[('a', 'omena'), ('b', 'pallo'), ('c', 'kissa')]

Huomaa, että zip -funktio palauttaa zip -tyyppisen objektin eikä luetteloa. Sinun on muunnettava se toistettavaksi, kuten yllä olevassa print -lausekkeessa on esitetty.



Yksinkertaisesti sanottuna zip -toiminto poimii saman hakemiston elementit kahdesta luettelosta ja yhdistää ne pariksi tupleissa. Joten luettelon 1 0. elementti yhdistetään list2: n 0. elementin kanssa, luettelon 1 ensimmäinen elementti yhdistetään list2: n ensimmäisen elementin kanssa ja niin edelleen. Zip -toiminto siirtyy vasemmalta oikealle ja paritettuja elementtejä sisältävällä sarjalla on sama indeksi kuin niihin tallennetuilla elementeillä.





Zipin käyttäminen, kun iteroitavissa ei ole yhtä monta elementtiä

Yllä olevassa esimerkissä molemmissa luetteloissa on sama määrä elementtejä. Jos käsittelet jotain koodia, jossa molemmissa luetteloissa ei ole yhtä monta elementtiä, zip -toiminto pysähtyy luettelon viimeiseen elementtiin, jossa on vähiten elementtejä.

Alla olevassa esimerkissä zip -toiminto pysähtyy c -elementtiin riippumatta siitä, onko listassa 2 vielä yksi elementti.



luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa', 'nukke']
vetoketjulla= postinumero(luettelo 1,luettelo 2)
Tulosta (lista(vetoketjulla))

Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

[('a', 'omena'), ('b', 'pallo'), ('c', 'kissa')]

Zip -toimintoa käytettäessä voit käyttää useampaa kuin kahta toistettavaa osaa

Yleensä zip -toimintoa käytetään kahden toistettavan objektin vertaamiseen. Voit kuitenkin välittää minkä tahansa määrän toistettavia argumentteja zip -funktiolle. Periaate pysähtyä lyhyimmän luettelon viimeiseen osaan on edelleen voimassa.

luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa', 'nukke']
luettelo 3= ['5', '3']
vetoketjulla= postinumero(luettelo 1,luettelo 2,luettelo 3)
Tulosta (lista(vetoketjulla))

Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

[('a', 'omena', '5'), ('b', 'pallo', '3')]

Yksilöllisten luetteloiden luominen Zip -tyyppisestä objektista

Jos sinulla on jo zip -objekti, voit käyttää sitä uusien yksittäisten luettelojen täyttämiseen, joita käytettiin aiemmin zip -toiminnon ensimmäisellä kutsulla.

luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa', 'nukke']
luettelo 3= ['5', '3']
vetoketjulla= postinumero(luettelo 1,luettelo 2,luettelo 3)
l1,l2,l3= postinumero(*vetoketjulla)
Tulosta (lista(l1), lista(l2), lista(l3))

Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

['a', 'b'] ['omena', 'pallo'] ['5', '3']

Yllä olevassa koodinäytteessä zip -objekti tyhjennetään käyttämällä * -operaattoria. Deflatoidut tulokset syötetään sitten toiseen zip -kutsuun, joka luo alkuperäisiä luetteloita. Huomaa, että et välttämättä saa kaikkia elementtejä takaisin alkuperäisiin luetteloihin, jos zip -objektin ensimmäisen kerran luomisessa käytettiin eripituisia luetteloita.

Zipin käyttäminen, kun haluat pitää elementit pisimmältä toistumattomalta

Useissa yllä olevissa esimerkeissä olet ehkä huomannut, että zip -toiminto pysähtyy oletusarvoisesti lyhyimmän toistokerran viimeiseen elementtiin. Entä jos haluat sen jatkavan iterointia, kunnes se saavuttaa pisimmän toistettavan viimeisen elementin?

Tällaisessa tapauksessa sinun on käytettävä Pythonin itertools -moduulin zip_longest () -menetelmää. Se toimii samalla tavalla kuin zip -toiminto, ja sillä on pieni ero, että se pysähtyy pisimmän toistettavan tyypin viimeiseen elementtiin.

alkaen työkalut tuontizip_longest
luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa', 'nukke']
luettelo 3= ['5', '3']
vetoketjulla=zip_longest(luettelo 1,luettelo 2,luettelo 3)
Tulosta (lista(vetoketjulla))

Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

[('a', 'omena', '5'), ('b', 'pallo', '3'), ('c', 'kissa', ei mitään), (ei mitään, 'nukke', ei mitään) ]

Puuttuvat arvot täytetään None -tyyppisinä objekteina. Voit myös syöttää oman arvon täyttämällä välittämällä ylimääräisen fillvalue -argumentin zip_longest -menetelmälle.

alkaen työkalut tuontizip_longest
luettelo 1= ['', 'b', 'c']
luettelo 2= ['omena', 'pallo', 'kissa', 'nukke']
luettelo 3= ['5', '3']
vetoketjulla=zip_longest(luettelo 1,luettelo 2,luettelo 3,täyttöarvo='oma_arvo')
Tulosta (lista(vetoketjulla))

Kun olet suorittanut yllä mainitun koodinäytteen, saat seuraavan tuloksen:

[('a', 'omena', '5'), ('b', 'pallo', '3'), ('c', 'kissa', 'oma_arvo'), ('oma_arvo', 'nukke ',' my_value ')]

Johtopäätös

Zip -toiminto voidaan emuloida käyttämällä joitain silmukoita ja ehtoja. Se auttaa kuitenkin pitämään koodin järjestyksessä ja puhtaampana poistamalla tarpeettomia puheita ja toistuvia lausuntoja.