Python

Hoe de Zip-functie in Python te gebruiken

Hoe de Zip-functie in Python te gebruiken
Dit artikel behandelt een handleiding over de "zip" -functie die beschikbaar is in de standaardmodulebibliotheek van Python. Met deze methode kunt u elementen van meerdere itereerbare objecten combineren en koppelen. U kunt dan verdere logica uitvoeren op deze paren. In veel gevallen is het gebruik van een "zip" -functie veel efficiënter en schoner dan het gebruik van meerdere, geneste "for"-lussen.

Over Zip-functie:

Zoals eerder vermeld, wordt de "zip" -functie gebruikt om paren te maken van elementen van meerdere itereerbare objecten. Overweeg het onderstaande voorbeeld om de basissyntaxis en het gebruik van de zip-functie te begrijpen:

lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat"]
gezipte = zip(lijst1, lijst2)
print (lijst(gezipt))

De eerste twee instructies in het bovenstaande codevoorbeeld definiëren twee lijsten die enkele elementen bevatten. Vervolgens wordt de functie "zip" gebruikt door de variabelen "lijst1" en "lijst2" als argumenten door te geven. Dit is de belangrijkste syntaxis van de "zip"-functie. Je hoeft alleen lijsten of andere geldige geordende iterables door te geven als argumenten waarvan je de elementen wilt combineren. Ten slotte wordt de print-instructie gebruikt om de uitvoer van de "gezipte" variabele te krijgen. Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

[('a', 'appel'), ('b', 'bal'), ('c', 'kat')]

Merk op dat de functie "zip" een object van het type "zip" retourneert en geen lijst. Je moet het converteren naar een itereerbaar type, zoals weergegeven in de printopdracht hierboven.

In eenvoudige bewoordingen pakt de "zip" -functie elementen van dezelfde index op uit twee lijsten en combineert ze als een paar in een tuple. Dus het 0e element van "list1" wordt gecombineerd met het 0e element van "list2", het 1e element van "list1" wordt gecombineerd met het 1e element van "list2" enzovoort. Zip-functie beweegt van links naar rechts en de tupel die gepaarde elementen bevat, heeft dezelfde index als de elementen die erin zijn opgeslagen.

Zip gebruiken wanneer iterables niet hetzelfde aantal elementen hebben

In het bovenstaande voorbeeld hebben beide lijsten hetzelfde aantal elementen. Als je te maken hebt met een code waarbij beide lijsten niet hetzelfde aantal elementen hebben, stopt de functie "zip" bij het laatste element van de lijst met het laagste aantal elementen.

In het onderstaande voorbeeld stopt de functie "zip" bij het element "c", ongeacht of "list2" nog een element heeft.

lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat", "pop"]
gezipte = zip(lijst1, lijst2)
print (lijst(gezipt))

Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

[('a', 'appel'), ('b', 'bal'), ('c', 'kat')]

U kunt meer dan twee iterables gebruiken bij het gebruik van de Zip-functie

Gewoonlijk wordt de "zip" -functie gebruikt om twee itereerbare objecten te vergelijken. U kunt echter een willekeurig aantal iterables als argumenten doorgeven aan de functie "zip". Het principe van stoppen bij het laatste element van de kortste lijst blijft van toepassing.

lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat", "pop"]
lijst3 = ["5", "3"]
zipped = zip(lijst1, lijst2, lijst3)
print (lijst(gezipt))

Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer als resultaat moeten krijgen:

[('a', 'appel', '5'), ('b', 'bal', '3')]

Individuele lijsten maken van een ziptype-object

Als u al een "zip" -object hebt, kunt u dit gebruiken om individuele lijsten opnieuw te vullen die eerder werden gebruikt toen de zip-functie voor het eerst werd aangeroepen.

lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat", "pop"]
lijst3 = ["5", "3"]
zipped = zip(lijst1, lijst2, lijst3)
l1, l2, l3 = zip(*gezipt)
print (lijst(l1), lijst(l2), lijst(l3))

Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer als resultaat moeten krijgen:

['a', 'b'] ['appel', 'bal'] ['5', '3']

In het bovenstaande codevoorbeeld is het "zip" -object leeggelopen met de "*"-operator. Leeggelopen resultaten worden vervolgens ingevoerd in een andere aanroep naar zip-functie die originele lijsten maakt. Houd er rekening mee dat u mogelijk niet alle elementen terugkrijgt in de originele lijsten als lijsten van ongelijke lengte werden gebruikt toen het "zip" -object de eerste keer werd gemaakt.

Zip gebruiken wanneer u elementen van de langste iterabele wilt houden

In meerdere voorbeelden hierboven heb je misschien opgemerkt dat de "zip" -functie standaard stopt bij het laatste element van de kortste iterabele. Wat als je wilt dat het blijft herhalen totdat het het laatste element van de langste iterabele bereikt??

In een dergelijk geval moet u de methode "zip_longest()" uit de module "itertools" van Python gebruiken. Het werkt hetzelfde als de "zip" -functie, met een klein verschil dat het stopt bij het laatste element van het langste itereerbare type.

van itertools import zip_longest
lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat", "pop"]
lijst3 = ["5", "3"]
zipped = zip_longest(lijst1, lijst2, lijst3)
print (lijst(gezipt))

Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer als resultaat moeten krijgen:

[('a', 'appel', '5'), ('b', 'bal', '3'), ('c', 'kat', Geen), (Geen, 'pop', Geen) ]

Ontbrekende waarden worden ingevuld als "Geen" type objecten. U kunt ook uw eigen waarde opgeven om in te vullen door een extra "fillvalu" -argument door te geven aan de "zip_longest" -methode.

van itertools import zip_longest
lijst1 = ["a", "b", "c"]
list2 = ["appel", "bal", "kat", "pop"]
lijst3 = ["5", "3"]
zipped = zip_longest(lijst1, lijst2, lijst3, fillvalue="mijn_waarde")
print (lijst(gezipt))

Nadat u het hierboven genoemde codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer als resultaat moeten krijgen:

[('a', 'appel', '5'), ('b', 'bal', '3'), ('c', 'kat', 'mijn_waarde'), ('mijn_waarde', 'pop ', 'mijn_waarde')]

Conclusie

Zip-functie kan worden geëmuleerd met behulp van enkele lussen en voorwaarden-statements. Het helpt echter om code georganiseerd en schoner te houden door onnodige breedsprakigheid en repetitieve uitspraken te verwijderen.

Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...