Python-zip ()

De functie zip () neemt iterables (kan nul of meer zijn), aggregeert ze in een tupel en retourneert het.

De syntaxis van de zip()functie is:

 zip (* iterables)

zip () Parameters

Parameter Omschrijving
iterables kunnen ingebouwde iterables zijn (zoals: list, string, dict), of door de gebruiker gedefinieerde iterables

Aanbevolen literatuur: Python Iterators, __iter__ en __next__

Retourwaarde van zip ()

De zip() functie retourneert een iterator van tupels op basis van de itereerbare objecten.

  • Als we geen enkele parameter doorgeven, zip()retourneert een lege iterator
  • Als een enkele iterabele wordt doorgegeven, zip()wordt een iterator van tupels geretourneerd waarbij elk tupel slechts één element heeft.
  • Als meerdere iterabelen worden doorgegeven, zip()wordt een iterator van tupels geretourneerd waarbij elk tupel elementen uit alle iterabelen heeft.
    Stel dat er twee iterabelen worden doorgegeven aan zip(); een iterable met drie en een andere met vijf elementen. Vervolgens bevat de geretourneerde iterator drie tupels. Het is omdat de iterator stopt wanneer de kortste iterabele is uitgeput.

Voorbeeld 1: Python zip ()

 number_list = (1, 2, 3) str_list = ('one', 'two', 'three') # No iterables are passed result = zip() # Converting iterator to list result_list = list(result) print(result_list) # Two iterables are passed result = zip(number_list, str_list) # Converting iterator to set result_set = set(result) print(result_set)

Uitvoer

 () ((2, 'twee'), (3, 'drie'), (1, 'een'))

Voorbeeld 2: verschillend aantal itereerbare elementen

 numbersList = (1, 2, 3) str_list = ('one', 'two') numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR') # Notice, the size of numbersList and numbers_tuple is different result = zip(numbersList, numbers_tuple) # Converting to set result_set = set(result) print(result_set) result = zip(numbersList, str_list, numbers_tuple) # Converting to set result_set = set(result) print(result_set)

Uitvoer

 ((2, 'TWO'), (3, 'THREE'), (1, 'ONE')) ((2, 'two', 'TWO'), (1, 'one', 'ONE'))

De * operator kan worden gebruikt in combinatie met zip()om de lijst uit te pakken.

 zip (* gezipteLijst)

Voorbeeld 3: de waarde uitpakken met zip ()

 coordinate = ('x', 'y', 'z') value = (3, 4, 5) result = zip(coordinate, value) result_list = list(result) print(result_list) c, v = zip(*result_list) print('c =', c) print('v =', v)

Uitvoer

 (('x', 3), ('y', 4), ('z', 5)) c = ('x', 'y', 'z') v = (3, 4, 5) 

Interessante artikelen...