Cómo utilizar la función zip() en Python (Combinar iterables)
Aprenda a utilizar la función zip() de Python para combinar varios iterables en paralelo. Domine la creación de diccionarios, descomprima la lógica y maneje las discrepancias de longitud.
Descripción general
Al iterar sobre conjuntos de datos, a menudo necesitará procesar varias listas relacionadas en paralelo. Por ejemplo, emparejar una lista de nombres de usuario con una lista de ID de usuario o hacer coincidir las coordenadas de los valores X e Y. En lugar de bucles anidados o acceder a elementos utilizando contadores de indexación de listas, Python proporciona la elegante función `zip()`.
La función `zip(*iterables)` toma múltiples iterables como argumentos y los agrega, devolviendo un iterador de tuplas donde la i-ésima tupla contiene el i-ésimo elemento de cada uno de los iterables de entrada. Esto le permite recorrer fácilmente dos o más colecciones simultáneamente con un único bucle "for".
De forma predeterminada, `zip()` deja de combinarse cuando se agota el iterable de entrada más corto. Cualquier elemento restante en los iterables más largos se descarta. Si desea emparejar elementos hasta que se agote el iterable más largo, completando los valores faltantes con un marcador de posición, Python proporciona `zip_longest()` en el módulo `itertools` de la biblioteca estándar.
Código y salida de ejecución
Este script demuestra la iteración de listas paralelas, la creación de un diccionario usando zip y el manejo de discrepancias usando zip_longest.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]Implementación paso a paso
- Pase las múltiples listas o iterables que desea combinar a la función zip().
- Desempaquete las tuplas generadas en una declaración de bucle for para realizar iteraciones paralelas limpias.
- Convierta el objeto zip en un diccionario usando dict(zip(keys_list, value_list)) para mapear.
- Importe itertools.zip_longest para combinar listas de longitudes desiguales sin perder los valores finales.
Preguntas frecuentes
¿Cómo "descomprimo" una secuencia comprimida de tuplas?
Puede descomprimir una secuencia nuevamente en listas separadas usando el operador de descompresión *: list(zip(*zipped_tuples)).
¿Zip() duplica los elementos en la memoria?
No, zip() devuelve un iterador que genera elementos bajo demanda, lo que lo hace extremadamente eficiente en memoria.
Temas relacionados
Aprenda a realizar un bucle o iterar en un diccionario de Python. Descubra métodos para recorrer claves, valores y pares clave-valor con ejemplos limpios y ejecutables.
Cómo fusionar dos listas en PythonConozca las mejores formas de fusionar y combinar dos listas en Python. Compare el operador más, el método de extensión, el desempaquetado de listas y las opciones de cadena.
Recursos recomendados de Python
Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.
Funciones de Python
Domina las funciones de Python. Aprenda a escribir código reutilizable usando def, definir argumentos, valores de retorno y comprender el alcance a nivel local y global.
Hoja de referencia de funciones del módulo matemático de Python
Guía de referencia rápida para la biblioteca estándar matemática de Python. Aprenda a utilizar funciones trigonométricas, logarítmicas, de redondeo y aritméticas.
Python vs JavaScript: ¿Qué lenguaje de programación es mejor?
Una comparación completa entre Python y JavaScript. Explore las diferencias de sintaxis, el rendimiento, los casos de uso (backend frente a frontend) y ejemplos de codificación.