Python

Sådan bruges zip-funktion i Python

Sådan bruges zip-funktion i Python
Denne artikel dækker en guide til "zip" -funktion tilgængelig i Pythons standardmodulbibliotek. Denne metode giver dig mulighed for at kombinere og parre elementer i flere gentagelige objekter. Du kan derefter køre yderligere logik på disse par. I mange tilfælde er brugen af ​​en "zip" -funktion meget mere effektiv og renere end at bruge flere indlejrede "for" -sløjfer.

Om zip-funktion

Som tidligere nævnt bruges “zip” -funktionen til at oprette par fra elementer fra flere gentagelige objekter. Overvej eksemplet nedenfor for at forstå den grundlæggende syntaks og brug af zip-funktion:

list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat"]
zip = zip (liste1, liste2)
udskriv (liste (lynlås))

De første to udsagn i ovenstående kodeeksempel definerer to lister, der indeholder nogle elementer. Dernæst bruges “zip” -funktionen ved at sende variablerne “list1” og “list2” som argumenter. Dette er den vigtigste syntaks for "zip" -funktionen. Du skal bare videregive lister eller andre gyldige ordnede iterables som argumenter, hvis elementer du vil kombinere. Endelig bruges udskriftserklæringen til at få output af variablen “zippet”. Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Bemærk, at "zip" -funktionen returnerer et "zip" -typeobjekt og ikke en liste. Du skal konvertere den til en iterabel type, som vist i udskriftserklæringen ovenfor.

I enkle vendinger samler "zip" -funktion elementer af det samme indeks fra to lister og kombinerer dem som et par i en tuple. Så det 0. element fra "liste1" kombineres med det 0 element i "liste2", det første element fra "liste1" kombineres med det første element i "liste2" og så videre. Zip-funktionen bevæger sig fra venstre til højre, og tuplen, der indeholder parrede elementer, har det samme indeks som de elementer, der er gemt i dem.

Brug af zip, når gentagelser ikke har det samme antal elementer

I ovenstående eksempel har begge lister det samme antal elementer. Hvis du har at gøre med en kode, hvor begge lister ikke har det samme antal elementer, stopper "zip" -funktionen ved det sidste element på listen, der har det laveste antal elementer.

I eksemplet nedenfor stopper "zip" -funktionen ved "c" -elementet, uanset om "list2" har et element mere.

list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat", "dukke"]
zip = zip (liste1, liste2)
udskriv (liste (lynlås))

Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Du kan bruge mere end to gentagelser, når du bruger zip-funktion

Normalt bruges “zip” -funktionen til at sammenligne to iterable objekter. Du kan dog videregive et vilkårligt antal iterables som argumenter til "zip" -funktionen. Princippet om at stoppe ved det sidste element på den korteste liste vil stadig være gældende.

list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat", "dukke"]
list3 = ["5", "3"]
zippet = zip (liste1, liste2, liste3)
udskriv (liste (lynlås))

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output som resultat:

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

Oprettelse af individuelle lister fra et objekt med zip-type

Hvis du allerede har et "zip" -objekt, kan du bruge det til at genbefolke individuelle lister, der tidligere blev brugt, da zip-funktionen først blev kaldt på dem.

list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat", "dukke"]
list3 = ["5", "3"]
zip = zip (liste1, liste2, liste3)
l1, l2, l3 = lynlås (* lynlås)
print (liste (l1), liste (l2), liste (l3))

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output som resultat:

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

I kodeeksemplet ovenfor deflateres "zip" -objektet ved hjælp af "*" -operatoren. Deflaterede resultater indføres derefter i et andet kald til zip-funktion, der opretter originale lister. Bemærk, at du muligvis ikke får alle elementer tilbage i de oprindelige lister, hvis der blev brugt lister med ulige længde, da "zip" -objektet blev oprettet første gang.

Brug af lynlås, når du vil holde elementer fra længst omvendelige

I flere eksempler ovenfor har du muligvis bemærket, at "zip" -funktionen som standard stopper ved det sidste element i den korteste iterable. Hvad hvis du vil have det til at fortsætte iterering, indtil det når det sidste element i den længste iterable?

I et sådant tilfælde skal du bruge metoden “zip_longest ()” fra Pythons “itertools” -modul. Det fungerer på samme måde som "zip" -funktionen, med en lille forskel, at den stopper ved det sidste element af den længste iterable type.

fra itertools importerer zip_longest
list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat", "dukke"]
list3 = ["5", "3"]
zippet = zip_longest (liste1, liste2, liste3)
udskriv (liste (lynlås))

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output som resultat:

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

Manglende værdier udfyldes som objekter af typen “Ingen”. Du kan også angive din egen værdi, der skal udfyldes, ved at sende et ekstra "fillvalue" -argument til "zip_longest" -metoden.

fra itertools importerer zip_longest
list1 = ["a", "b", "c"]
list2 = ["æble", "kugle", "kat", "dukke"]
list3 = ["5", "3"]
zippet = zip_longest (liste1, liste2, liste3, udfyldningsværdi = "min_værdi")
udskriv (liste (lynlås))

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output som resultat:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' min_værdi ')]

Konklusion

Zip-funktionen kan emuleres ved hjælp af nogle sløjfer og betingelser. Det hjælper dog med at holde koden organiseret og renere ved at fjerne unødvendige detaljer og gentagne udsagn.

Mus AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
AppyMouse pegefelt på skærmen og musemarkør til Windows-tablets
Tabletbrugere savner ofte musemarkøren, især når de er vante til at bruge bærbare computere. Touchscreen-smartphones og tablets har mange fordele, og ...
Mus Midterste museknap fungerer ikke i Windows 10
Midterste museknap fungerer ikke i Windows 10
Det midterste museknap hjælper dig med at rulle gennem lange websider og skærme med en masse data. Hvis det stopper, vil du ende med at bruge tastatur...
Mus Sådan ændres venstre og højre museknap på Windows 10-pc
Sådan ændres venstre og højre museknap på Windows 10-pc
Det er en ganske normal, at alle computermusenheder er ergonomisk designet til højrehåndede brugere. Men der er musenheder til rådighed, der er specie...