La función zip () toma iterables (puede ser cero o más), los agrega en una tupla y los devuelve.
La sintaxis de la zip()
función es:
zip (* iterables)
Parámetros zip ()
Parámetro | Descripción |
---|---|
iterables | pueden ser iterables incorporados (como: lista, cadena, dict) o iterables definidos por el usuario |
Lectura recomendada: iteradores de Python, __iter__ y __next__
Valor devuelto de zip ()
La zip()
función devuelve un iterador de tuplas basado en los objetos iterables.
- Si no pasamos ningún parámetro,
zip()
devuelve un iterador vacío - Si se pasa un único iterable,
zip()
devuelve un iterador de tuplas con cada tupla con un solo elemento. - Si se pasan varios iterables,
zip()
devuelve un iterador de tuplas y cada tupla tiene elementos de todos los iterables.
Supongamos que se pasan dos iterableszip()
; uno iterable que contiene tres y otro que contiene cinco elementos. Entonces, el iterador devuelto contendrá tres tuplas. Es porque el iterador se detiene cuando se agota el iterable más corto.
Ejemplo 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)
Salida
() ((2, 'dos'), (3, 'tres'), (1, 'uno'))
Ejemplo 2: diferente número de elementos iterables
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)
Salida
((2, 'DOS'), (3, 'TRES'), (1, 'UNO')) ((2, 'dos', 'DOS'), (1, 'uno', 'UNO'))
El operador * se puede utilizar junto con zip()
para descomprimir la lista.
zip (* zippedList)
Ejemplo 3: descomprimir el valor con 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)
Salida
(('x', 3), ('y', 4), ('z', 5)) c = ('x', 'y', 'z') v = (3, 4, 5)