Tutorial de la función Python Zip()
En Python, podemos usar la función zip() para agregar o combinar dos iterables como cadenas, listas, tuplas, etc. La función zip() esencialmente «comprime» los iterables juntos devolviendo una tupla que contiene los elementos correspondientes de cada iterable.
La función zip() toma uno o más iterables, como cadenas, listas, conjuntos y devuelve un iterador de tuplas donde cada tupla contiene elementos de cada iterable, que se pasan al método zip().
Analicemos qué es la función zip() y cómo puede usarla para resolver problemas del mundo real.
Sintaxis de la función Python Zip()
Sintaxis: zip(iterable1, iterable2, .......)
Parámetros: Iterables: cualquier iterable, como cadena, lista, tupla, etc.
Devuelve un objeto zip que actúa como iterador.
Ejemplo de código:
Books=['Book1','Book2','Book3'] Price=[500,200,300] Pages=[999,499,500] itr=zip(Books,Price,Pages) print(list(itr))
Producción
A partir de la salida, podemos ver que el objeto zip resultante tiene n número de tuplas y la n-ésima tupla contiene el n-ésimo elemento coincidente de los iterables de entrada.
Considere las dos listas – x=[x1,x2,x3,…,xn] y=[y1,y2,y3,…,yn]
zip_itr=zip(x,y)
Entonces, zip_itr=[(x1,y1),(x2,y2),…,(xn,yn)]
El objeto zip se puede convertir en una lista de diccionario de tuplas usando el siguiente código.
Ejemplo de código:
Books=['Book1','Book2'] Author=['Akhil','Himanshu'] itr1=zip(Books,Author) # list of tuples print(list(itr1)) itr2=zip(Books,Author) # dictionary print(dict(itr2))
Producción:
Iterando el objeto zip
Podemos atravesar elementos en el objeto zip usando la función next () hasta que se detecte la excepción StopIteration.
Ejemplo de código:
Books=['Book1','Book2'] Author=['Akhil','Himanshu'] zipObj=zip(Books,Author) while(1): try: itr=next(zipObj) print(itr[0],'-',itr[1]) except StopIteration: break
Producción:
Pasar argumentos de diferentes longitudes
Hay algunos escenarios en los que pasar iterables de diferente longitud al objeto zip. A continuación se muestra un caso de este tipo.
Ejemplo de código:
Books=['Book1','Book2','Book3'] Price=[500,200] Pages=[999] itr=zip(Books,Price,Pages) print(list(itr))
Producción:
función zip_longest()
Aquí, el iterador zip recopila elementos de cada lista hasta que se agotan los elementos de la lista de longitud más corta.
Si queremos incluir elementos no coincidentes de las otras dos listas en el objeto comprimido, use el método zip_longest(), definido en módulo itertools.
Ejemplo de código:
# import itertools module import itertools Books=['Book1','Book2','Book3'] Price=[500,200] Pages=[999] itr=itertools.zip_longest(Books,Price,Pages) print(list(itr))
Producción:
En el resultado anterior, podemos ver que no hay valores Ninguno. Podemos reemplazar estos valores Ninguno con los requeridos usando el parámetro de valor de relleno en el método zip_longest().
Ejemplo de código:
# import itertools module import itertools Books=['Book1','Book2','Book3'] Price=[500,200] Pages=[999] itr=itertools.zip_longest(Books,Price,Pages,fillvalue='-') print(list(itr))
Producción:
Aplicaciones o uso de la función Zip()
1. Ordenar los datos en el objeto zip, que consta de más de un iterable
Considere dos listas: Libros =[‘Book1′,’Book2′,’Book3’]Precio=[500,200,300].
Podemos ordenar el objeto zip formado usando las listas anteriores por precio pasando la Lista de precios como el primer iterable en la función zip y usando la función sorted().
Ejemplo de código:
Books=['Book1','Book2','Book3'] Price=[500,200,300] itr=zip(Price,Books) print(sorted(list(itr)))
Producción:
2. Tratamiento de datos
Podemos hacer algunos cálculos de datos sobre los elementos correspondientes en los iterables.
Itemcost=[100,200,300] Tax_percent=[10,20,30] itr=zip(Itemcost,Tax_percent) for itr1,itr2 in itr: tax_amount=itr1*itr2/100 print('Itemcost-',itr1,'Tax_percent-',itr2,'Tax Amount-',tax_amount)
Producción:
3. Crea un diccionario usando dos listas
También puedes usar Función zip() de Python para crear un diccionario a partir de dos listas. Aquí hay un ejemplo de lo mismo:
keys = ['a', 'b', 'c'] values = [1, 2, 3] d = dict(zip(keys, values)) print(d)
Tenga en cuenta que si la longitud de ambas listas no es igual, la función zip() solo combinará elementos hasta la longitud de la longitud más corta.
4. Iterando diccionarios
Otro caso de uso para la función zip() es iterar sobre pares de diccionarios de clave y valor. Aquí hay un ejemplo de código de este escenario:
d = {'a': 1, 'b': 2, 'c': 3} for key, value in d.items(): print(f'{key}: {value}')
Descomprimir el objeto Zip
Para descomprimir el objeto comprimido, especifique * antes del objeto comprimido en el método zip(). A continuación se muestra un programa de ejemplo simple para descomprimir el objeto comprimido.
Ejemplo de código:
Books=['Book1','Book2'] Author=['Akhil','Himanshu'] zip_obj=zip(Books,Author) # unzipping itr1,itr2=zip(*zip_obj) print(itr1) print(itr2)
Producción:
Ejemplos de la función Python Zip()
1. Contraer dos listas
Usaremos la función zip() de Python para combinar dos listas en este ejemplo.
a = [1, 2, 3] b = ['a', 'b', 'c'] zipped = zip(a, b) print(zipped)
Puede usar el método list() en el ejemplo anterior para crear tuplas comprimidas.
2. Comprime dos diccionarios
Aquí crearemos una lista de tuplas de dos diccionarios, donde cada tupla consta de un par clave-valor. Aquí hay un ejemplo:
dict1 = {'a': 1, 'b': 2, 'c': 3} dict2 = {'d': 4, 'e': 5, 'f': 6} zipped_dicts = zip(dict1, dict2) print(list(zipped_dicts))
3. Cremallera para bucle
Aquí usaremos el ciclo for para iterar sobre las tuplas devueltas por la función zip(). Entendamos esto con un ejemplo de código:
dict1 = {'a': 1, 'b': 2, 'c': 3} dict2 = {'d': 4, 'e': 5, 'f': 6} for key1, key2 in zip(dict1, dict2): print(key1, key2)
4. Zip() 3 listas
Puede usar la función zip para iterar sobre varias listas a la vez. Para iterar sobre tres listas, puede usar la función zip en combinación con el bucle for como este:
list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] zipped_lists = list(zip(list1, list2, list3)) print(zipped_lists)
Debe leer los tutoriales de Python:
- Lista de palabras reservadas de Python con definiciones y ejemplos
- Cómo copiar la lista en Python
- Cómo ordenar una lista de tuplas en Python
- Longitud del diccionario Python [How To Get Length]
- Cómo convertir tuplas de Python en listas