Python

Hvordan bruke Zip-funksjon i Python

Hvordan bruke Zip-funksjon i Python
Denne artikkelen vil dekke en guide om “zip” -funksjonen som er tilgjengelig i Pythons standard modulbibliotek. Denne metoden lar deg kombinere og pare elementer av flere iterable objekter. Du kan da kjøre videre 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 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_longest
list1 = ["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_longest
list1 = ["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.

Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...
Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...