Python

Kuinka käyttää Zip-toimintoa Pythonissa

Kuinka käyttää Zip-toimintoa Pythonissa
Tässä artikkelissa käsitellään "zip" -toiminnon opas, joka on saatavana Pythonin vakiomoduulikirjastossa. Tämän menetelmän avulla voit yhdistää ja parittaa useita iteroitavia objekteja. Tämän jälkeen voit suorittaa lisää logiikkaa näillä pareilla. Monissa tapauksissa "zip" -toiminnon käyttö on paljon tehokkaampaa ja puhtaampaa kuin useiden sisäkkäisten "for" -silmukoiden käyttö.

Tietoja Zip-toiminnosta

Kuten aiemmin todettiin, “zip” -toimintoa käytetään luomaan pareja useiden iteroitavien objektien elementeistä. Harkitse alla olevaa esimerkkiä ymmärtääksesi zip-toiminnon perussyntaksin ja käytön:

list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa"]
zip = zip (luettelo1, luettelo2)
tulosta (luettelo (pakattu))

Yllä olevan koodinäytteen kaksi ensimmäistä lausetta määrittelevät kaksi luetteloa, jotka sisältävät joitain elementtejä. Seuraavaksi zip-funktiota käytetään välittämällä argumentit ”list1” ja “list2” muuttujat. Tämä on "zip" -toiminnon pääsyntaksi. Sinun tarvitsee vain välittää luettelot tai muut voimassa olevat järjestetyt iterable-argumentit, joiden elementit haluat yhdistää. Viimeiseksi tulostuslauseketta käytetään "zipped" -muuttujan tuloksen saamiseen. Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

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

Huomaa, että "zip" -toiminto palauttaa "zip" -tyyppisen objektin eikä luetteloa. Sinun on muunnettava se iteroitavaksi tyypiksi, kuten yllä olevassa tulostuslausekkeessa on esitetty.

Yksinkertaisesti sanottuna "zip" -toiminto poimii saman hakemiston elementit kahdesta luettelosta ja yhdistää ne pariksi tuplana. Joten "list1": n 0. elementti yhdistetään "list2": n 0. elementtiin, "list1": n ensimmäinen elementti "list2": n ensimmäiseen elementtiin ja niin edelleen. Zip-toiminto liikkuu vasemmalta oikealle ja pariksi liitettyjä elementtejä sisältävällä sarjalla on sama hakemisto kuin niihin tallennetuilla elementeillä.

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

Edellä mainitussa esimerkissä molemmilla luetteloilla on sama määrä elementtejä. Jos kyseessä on jokin koodi, jossa molemmissa luetteloissa ei ole sama määrä elementtejä, "zip" -toiminto pysähtyy luettelon viimeiseen elementtiin, jossa on pienin määrä elementtejä.

Alla olevassa esimerkissä "zip" -toiminto pysähtyy "c" -elementtiin riippumatta siitä, onko "list2": lla vielä yksi elementti.

list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa", "nukke"]
zip = zip (luettelo1, luettelo2)
tulosta (luettelo (pakattu))

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

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

Voit käyttää enemmän kuin kahta steriiliä käytettäessä Zip-toimintoa

Yleensä “zip” -toimintoa käytetään kahden iteroitavan objektin vertaamiseen. Voit kuitenkin välittää minkä tahansa määrän iterableja argumentteina "zip" -funktiolle. Periaatetta pysähtyä lyhimmän luettelon viimeiseen kohtaan sovelletaan edelleen.

list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa", "nukke"]
list3 = ["5", "3"]
zip = zip (luettelo1, luettelo2, luettelo3)
tulosta (luettelo (pakattu))

Suoritettuasi yllä mainitun koodinäytteen sinun pitäisi saada seuraava tulos tuloksena:

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

Yksittäisten luetteloiden luominen Zip Type -objektista

Jos sinulla on jo "zip" -objekti, voit käyttää sitä uudelleen yksittäisten luetteloiden uudelleenkäyttöön, joita käytettiin aiemmin zip-toiminnon ensimmäisen kutsumisen yhteydessä.

list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa", "nukke"]
list3 = ["5", "3"]
zip = zip (luettelo1, luettelo2, luettelo3)
l1, l2, l3 = vetoketju (* vetoketju)
tulosta (luettelo (l1), luettelo (l2), luettelo (l3))

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava tulos tuloksena:

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

Yllä olevassa koodinäytteessä zip-objekti tyhjennetään käyttämällä * -operaattoria. Tyhjennetyt tulokset syötetään sitten toiseen zip-kutsu-toimintoon, joka luo alkuperäiset luettelot. Huomaa, että et välttämättä saa kaikkia elementtejä takaisin alkuperäisiin luetteloihin, jos epätasaisen pituisia luetteloita käytettiin, kun "zip" -objekti luotiin ensimmäisen kerran.

Zipin käyttäminen, kun haluat säilyttää elementit pisimmältä iteroituvalta

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

Tällöin sinun on käytettävä "zip_longest ()" -menetelmää Pythonin "itertools" -moduulista. Se toimii samalla tavalla kuin "zip" -toiminto, yhdellä pienellä erolla, että se pysähtyy pisimmän iteroitavan tyypin viimeiseen elementtiin.

tuoda itertooleista zip_longest
list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa", "nukke"]
list3 = ["5", "3"]
zip = zip_lestest (luettelo1, luettelo2, luettelo3)
tulosta (luettelo (pakattu))

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava tulos tuloksena:

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

Puuttuvat arvot täytetään ”Ei mitään” -tyyppisinä objekteina. Voit myös antaa oman arvon täyttämistä varten välittämällä ylimääräisen "fillvalue" -argumentin "zip_longest" -menetelmälle.

tuoda itertooleista zip_longest
list1 = ["a", "b", "c"]
list2 = ["omena", "pallo", "kissa", "nukke"]
list3 = ["5", "3"]
zip = zip_pisin (luettelo1, luettelo2, luettelo3, fillvalue = "oma_arvo")
tulosta (luettelo (pakattu))

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava tulos tuloksena:

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

Johtopäätös

Zip-toiminto voidaan jäljitellä käyttämällä joitain silmukoita ja ehtolausekkeita. Se auttaa kuitenkin pitämään koodin järjestyksessä ja puhtaana poistamalla tarpeettoman sanatarkkuuden ja toistuvat lausunnot.

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...