Hvordan bruke Zip -funksjon i Python

How Use Zip Function Python



Denne artikkelen vil dekke en guide om zip -funksjon som er tilgjengelig i Pythons standardmodulbibliotek. Denne metoden lar deg kombinere og koble sammen elementer av flere gjentakende objekter. Du kan deretter kjøre ytterligere logikk på disse parene. I mange tilfeller er bruk av en zip -funksjon mye mer effektiv og renere enn å bruke flere, nestede for løkker.

Om Zip -funksjon

Som nevnt tidligere, brukes zip -funksjonen til å lage par fra elementer av flere gjentatte objekter. Vurder eksemplet nedenfor for å forstå den grunnleggende syntaksen og bruken av zip -funksjonen:







liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt']
glidelås= glidelås(liste 1,liste 2)
skrive ut (liste(glidelås))

De to første setningene i kodeeksemplet ovenfor definerer to lister som inneholder noen elementer. Deretter brukes zip -funksjonen ved å sende list1 og list2 variabler som argumenter. Dette er hovedsyntaksen for zip -funksjonen. Du må bare sende lister eller andre gyldige ordnede iterabler som argumenter hvis elementer du vil kombinere. Til slutt brukes utskriftserklæringen for å få utgangen av variabelen med glidelås. Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata:



[('a', 'eple'), ('b', 'ball'), ('c', 'katt')]

Vær oppmerksom på at zip -funksjonen returnerer et zip -objekt og ikke en liste. Du må konvertere den til en gjentakende type, som vist i utskriftserklæringen ovenfor.



Enkelt sagt, zip -funksjonen plukker opp elementer fra samme indeks fra to lister og kombinerer dem som et par i en tupel. Så det niende elementet fra liste1 er kombinert med det niende elementet i liste2, det første elementet fra liste1 er kombinert med det første elementet i liste2 og så videre. Zip -funksjonen beveger seg fra venstre til høyre, og tupelen som inneholder sammenkoblede elementer har samme indeks som elementene som er lagret i dem.





Bruke Zip Når Iterables ikke har samme antall elementer

I eksemplet ovenfor har begge listene like mange elementer. Hvis du har å gjøre med noen kode der begge listene ikke har samme antall elementer, stopper zip -funksjonen ved det siste elementet i listen som har det laveste antallet elementer.

I eksemplet nedenfor stopper zip -funksjonen ved c -elementet, uavhengig av at list2 har et element til.



liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt', 'dukke']
glidelås= glidelås(liste 1,liste 2)
skrive ut (liste(glidelås))

Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata:

[('a', 'eple'), ('b', 'ball'), ('c', 'katt')]

Du kan bruke mer enn to Iterables når du bruker Zip -funksjon

Vanligvis brukes zip -funksjon for å sammenligne to gjentakende objekter. Du kan imidlertid sende et hvilket som helst antall iterabler som argumenter til zip -funksjonen. Prinsippet om å stoppe ved det siste elementet i den korteste listen vil fortsatt være gjeldende.

liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt', 'dukke']
liste 3= ['5', '3']
glidelås= glidelås(liste 1,liste 2,liste 3)
skrive ut (liste(glidelås))

Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata som resultat:

[('a', 'eple', '5'), ('b', 'ball', '3')]

Opprette individuelle lister fra et zip -objekt

Hvis du allerede har et zip -objekt, kan du bruke det til å repopulere individuelle lister som tidligere ble brukt da zip -funksjonen først ble kalt på dem.

liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt', 'dukke']
liste 3= ['5', '3']
glidelås= glidelås(liste 1,liste 2,liste 3)
l1,l2,l3= glidelås(*glidelås)
skrive ut (liste(l1), liste(l2), liste(l3))

Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata som resultat:

['a', 'b'] ['eple', 'ball'] ['5', '3']

I kodeeksemplet ovenfor tømmes zip -objektet med * operator. Deflaterte resultater mates deretter inn i en annen call to zip -funksjon som lager originale lister. Vær oppmerksom på at du kanskje ikke får alle elementene tilbake i de originale listene hvis lister med ulik lengde ble brukt da zip -objektet ble opprettet første gang.

Bruke Zip når du vil beholde elementer fra lengste Iterable

I flere eksempler ovenfor har du kanskje observert at zip -funksjonen som standard stopper ved det siste elementet i den korteste gjentakelsen. Hva om du vil at den skal fortsette å gjenta til den når det siste elementet i den lengste gjentatte?

I et slikt tilfelle må du bruke zip_longest () -metoden fra Pythons itertools -modul. Den fungerer på samme måte som zip -funksjonen, med en liten forskjell at den stopper ved det siste elementet i den lengste gjentagelige typen.

fra itertools importzip_longest
liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt', 'dukke']
liste 3= ['5', '3']
glidelås=zip_longest(liste 1,liste 2,liste 3)
skrive ut (liste(glidelås))

Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata som resultat:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', None), (None, 'doll', None) ]

Manglende verdier fylles ut som Ingen type objekter. Du kan også angi din egen verdi for å fylle ved å sende et ekstra fillvalue -argument til zip_longest -metoden.

fra itertools importzip_longest
liste 1= ['til', 'b', 'c']
liste 2= ['eple', 'ball', 'katt', 'dukke']
liste 3= ['5', '3']
glidelås=zip_longest(liste 1,liste 2,liste 3,fyllverdi='min_verdi')
skrive ut (liste(glidelås))

Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata som resultat:

[('a', 'eple', '5'), ('b', 'ball', '3'), ('c', 'katt', 'min_verdi'), ('min_verdi', 'dukke ',' min_verdi ')]

Konklusjon

Zip -funksjonen kan emuleres ved hjelp av noen sløyfer og betingelser. Det hjelper imidlertid med å holde koden organisert og renere ved å fjerne unødvendig verbositet og repeterende utsagn.