Hoe de Zip-functie in Python te gebruiken

How Use Zip Function Python



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 op deze paren uitvoeren. 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= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat']
gezipt= zip(lijst1,lijst2)
afdrukken (lijst(gezipt))

De eerste twee instructies in het bovenstaande codevoorbeeld definiëren twee lijsten die enkele elementen bevatten. Vervolgens wordt de zip-functie gebruikt door de variabelen list1 en list2 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 gecomprimeerde 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.



Simpel gezegd, de zip-functie haalt elementen van dezelfde index uit twee lijsten en combineert ze als een paar in een tupel. Dus het 0e element van lijst1 wordt gecombineerd met het 0e element van lijst2, het 1e element van lijst1 wordt gecombineerd met het 1e element van lijst2 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 bovenstaand 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 zip-functie bij het laatste element van de lijst met het laagste aantal elementen.

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



lijst1= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat', 'pop']
gezipt= zip(lijst1,lijst2)
afdrukken (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 zip-functie. Het principe van stoppen bij het laatste element van de kortste lijst blijft gelden.

lijst1= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat', 'pop']
lijst3= ['5', '3']
gezipt= zip(lijst1,lijst2,lijst3)
afdrukken (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 afzonderlijke lijsten opnieuw te vullen die eerder werden gebruikt toen de zip-functie voor het eerst werd aangeroepen.

lijst1= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat', 'pop']
lijst3= ['5', '3']
gezipt= zip(lijst1,lijst2,lijst3)
l1,l2,l3= zip(*geritst)
afdrukken (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 wordt het zip-object leeggelaten met de * operator. Gedefleerde 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 oorspronkelijke 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 itereerbare bereikt?

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

van itertools importerenzip_longest
lijst1= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat', 'pop']
lijst3= ['5', '3']
gezipt=zip_longest(lijst1,lijst2,lijst3)
afdrukken (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 objecten van het type Geen. U kunt ook uw eigen waarde opgeven om in te vullen door een extra vulwaarde-argument door te geven aan de zip_longest-methode.

van itertools importerenzip_longest
lijst1= ['tot', 'B', 'C']
lijst2= ['appel', 'bal', 'kat', 'pop']
lijst3= ['5', '3']
gezipt=zip_longest(lijst1,lijst2,lijst3,vulwaarde='mijn_waarde')
afdrukken (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-instructies. Het helpt echter om code georganiseerd en schoner te houden door onnodige breedsprakigheid en repetitieve uitspraken te verwijderen.