Om Zip-funksjon
Som nevnt tidligere brukes “zip” -funksjonen til å lage par fra elementer av flere iterable objekter. Vurder eksemplet nedenfor for å forstå den grunnleggende syntaksen og bruken av zip-funksjonen:
list1 = ["a", "b", "c"]list2 = ["eple", "ball", "katt"]
zippet = zip (liste1, liste2)
skriv ut (liste (glidelås))
De to første setningene i ovennevnte kodeeksempel definerer to lister som inneholder noen elementer. Deretter brukes "zip" -funksjonen ved å sende variabler "list1" og "list2" som argumenter. Dette er hovedsyntaks for "zip" -funksjonen. Du må bare sende lister eller andre gyldige bestilte iterables som argumenter hvis elementer du vil kombinere. Til slutt brukes utskriftsuttalelsen for å få utdata fra "glidelåst" -variabelen. Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata:
[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]Merk at "zip" -funksjonen returnerer et "zip" -objekt og ikke en liste. Du må konvertere den til en iterabel type, som vist i utskriftsuttalelsen ovenfor.
Enkelt sagt plukker "zip" -funksjonen elementer fra den samme indeksen fra to lister og kombinerer dem som et par i en tuple. Så det 0te elementet fra "liste1" er kombinert med det 0te elementet av "liste2", det første elementet fra "liste1" kombineres 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 nevnt ovenfor har begge lister like mange elementer. I tilfelle du har å gjøre med en kode der begge listene ikke har like mange elementer, vil "zip" -funksjonen stoppe ved det siste elementet i listen som har det laveste antallet elementer.
I eksemplet nedenfor vil "zip" -funksjonen stoppe ved "c" -elementet, uavhengig av at "list2" har ett element til.
list1 = ["a", "b", "c"]list2 = ["apple", "ball", "cat", "doll"]
zippet = zip (liste1, liste2)
skriv ut (liste (glidelås))
Etter å ha kjørt kodeeksemplet nevnt ovenfor, bør du få følgende utdata:
[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]Du kan bruke mer enn to punkter ved bruk av Zip-funksjonen
Vanligvis brukes “zip” -funksjonen til å sammenligne to gjentatte objekter. Du kan imidlertid sende et hvilket som helst antall iterables som argumenter til "zip" -funksjonen. Prinsippet om å stoppe ved det siste elementet på den korteste listen vil fortsatt være aktuelt.
list1 = ["a", "b", "c"]list2 = ["apple", "ball", "cat", "doll"]
list3 = ["5", "3"]
zippet = zip (liste1, liste2, liste3)
skriv ut (liste (glidelås))
Etter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
[('a', 'apple', '5'), ('b', 'ball', '3')]Opprette individuelle lister fra et objekt med zip-type
Hvis du allerede har et "zip" -objekt, kan du bruke det til å fylle ut individuelle lister som tidligere ble brukt da zip-funksjonen først ble kalt på dem.
list1 = ["a", "b", "c"]list2 = ["apple", "ball", "cat", "doll"]
list3 = ["5", "3"]
zippet = zip (liste1, liste2, liste3)
l1, l2, l3 = glidelås (* glidelås)
skriv ut (liste (l1), liste (l2), liste (l3))
Etter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
['a', 'b'] ['apple', 'ball'] ['5', '3']I kodeeksemplet ovenfor deflaseres "zip" -objektet ved hjelp av "*" -operatøren. Deflaterte resultater mates deretter inn i en annen samtale til zip-funksjon som oppretter originale lister. Vær oppmerksom på at du kanskje ikke får tilbake alle elementene i de originale listene hvis lister med ulik lengde ble brukt da "zip" -objektet ble opprettet første gang.
Bruke glidelås når du vil holde elementene lengst gjengivelige
I flere eksempler ovenfor kan du ha observert at "zip" -funksjonen som standard stopper ved det siste elementet i den korteste iterable. Hva om du vil at den skal fortsette å gjenta til den når det siste elementet i den lengste iterabelen?
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 av den lengste iterable typen.
fra itverktøy importerer zip_longestlist1 = ["a", "b", "c"]
list2 = ["apple", "ball", "cat", "doll"]
list3 = ["5", "3"]
zippet = zip_longest (liste1, liste2, liste3)
skriv ut (liste (glidelås))
Etter å ha kjørt kodeprøven som er 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 objekter av typen “Ingen”. Du kan også oppgi din egen verdi å fylle ved å sende et ekstra "fillvalue" -argument til "zip_longest" -metoden.
fra itverktøy importerer zip_longestlist1 = ["a", "b", "c"]
list2 = ["apple", "ball", "cat", "doll"]
list3 = ["5", "3"]
zippet = zip_longest (liste1, liste2, liste3, fyllverdi = "min_verdi")
skriv ut (liste (glidelås))
Etter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' min_verdi ')]Konklusjon
Zip-funksjonen kan emuleres ved hjelp av noen sløyfer og betingelser. Imidlertid hjelper det å holde koden organisert og renere ved å fjerne unødvendig ordlighetsgrad og repeterende uttalelser.