La función zip()
en Python permite combinar múltiples iterables (como listas, tuplas, o cadenas) en pares de elementos. Devuelve un iterador de tuplas, donde cada tupla contiene elementos de las posiciones correspondientes de los iterables.
zip()
toma dos o más iterables y agrupa los elementos que ocupan la misma posición en cada uno. Si los iterables tienen diferente longitud, zip()
detendrá el proceso cuando el más corto se quede sin elementos.
lista1 = [1, 2, 3]
lista2 = ['a', 'b', 'c']
resultado = zip(lista1, lista2)
print(list(resultado)) # [(1, 'a'), (2, 'b'), (3, 'c')]
En este ejemplo, zip()
combina los elementos de lista1
y lista2
en tuplas emparejadas.
numeros = [1, 2, 3]
letras = ['a', 'b', 'c']
colores = ['rojo', 'verde', 'azul']
resultado = zip(numeros, letras, colores)
print(list(resultado)) # [(1, 'a', 'rojo'), (2, 'b', 'verde'), (3, 'c', 'azul')]
También puedes usar zip()
junto con el operador de desempaquetado *
para invertir el proceso:
pares = [(1, 'a'), (2, 'b'), (3, 'c')]
numeros, letras = zip(*pares)
print(numeros) # (1, 2, 3)
print(letras) # ('a', 'b', 'c')
zip()
es útil para recorrer múltiples listas al mismo tiempo:
for num, letra in zip(numeros, letras):
print(f'{num} -> {letra}')
1. Diferente longitud de iterables:
Si los iterables tienen diferente longitud, zip()
solo empareja hasta el último elemento del iterable más corto:
lista1 = [1, 2]
lista2 = ['a', 'b', 'c']
print(list(zip(lista1, lista2))) # [(1, 'a'), (2, 'b')]
2. Convertir en diccionario:
Puedes usar zip()
para crear un diccionario a partir de dos listas:
claves = ['nombre', 'edad', 'ciudad']
valores = ['Ana', 25, 'Madrid']
diccionario = dict(zip(claves, valores))
print(diccionario) # {'nombre': 'Ana', 'edad': 25, 'ciudad': 'Madrid'}
Consulta más detalles sobre la función zip()
en la documentación oficial de Python.
Jorge García
Fullstack developer