Skip to content

Cómo combinar dos listas en Python de manera sencilla

Python es conocido por su legibilidad y sintaxis elegante, y viene cargado con una multitud de funciones incorporadas para hacer la vida más fácil a los desarrolladores. Entre ellas se encuentra la función zip(), una herramienta versátil para iterar sobre múltiples listas en paralelo. Esta guía te brindará una inmersión profunda en la función zip() de Python, mostrando cómo recorrer múltiples listas y crear diccionarios sobre la marcha.

¿Quieres crear rápidamente visualizaciones de datos desde un Dataframe de Python Pandas sin escribir código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo tu dataframe de pandas (y dataframe de polars) en una interfaz de usuario de estilo Tableau para exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

Entendiendo la función zip() de Python

La función zip() es una función integrada de Python que combina elementos de dos o más objetos iterables (como listas, tuplas o conjuntos) en tuplas. La función devuelve un iterador que genera estas tuplas. Si los iteradores pasados tienen longitudes diferentes, el iterador con menos elementos determina la longitud de la salida generada.

lista1 = ["a", "b", "c"]
lista2 = [1, 2, 3]
combinada = zip(lista1, lista2)
print(list(combinada))

Esto producirá la siguiente salida:

[('a', 1), ('b', 2), ('c', 3)]

Iteración Paralela con la función zip() de Python

A menudo, en programación, hay una necesidad de recorrer dos o más listas en paralelo. La función zip() proporciona una forma simple y eficiente de lograr esto, reduciendo drásticamente la necesidad de indexación y, como resultado, el potencial de errores.

Considera dos listas: una que contiene nombres de estudiantes y otra que almacena sus calificaciones respectivas. Si quieres imprimir el nombre de cada estudiante junto con su calificación, puedes usar la función zip().

estudiantes = ["Alice", "Bob", "Charlie"]
calificaciones = [85, 90, 95]
 
for estudiante, calificacion in zip(estudiantes, calificaciones):
    print(f"{estudiante}: {calificacion}")

Creación de Diccionarios con la función zip() de Python

La función zip() de Python brilla por su capacidad de crear diccionarios de forma dinámica. Los diccionarios en Python son estructuras de datos que almacenan datos como pares clave-valor. Si tienes dos listas: una con claves y otra con valores correspondientes, puedes combinarlas en un diccionario utilizando la función zip().

claves = ['manzana', 'plátano', 'cereza']
valores = [1, 2, 3]
diccionario_frutas = dict(zip(claves, valores))
print(diccionario_frutas)

Esto producirá la siguiente salida:

{'manzana': 1, 'plátano': 2, 'cereza': 3}

Esta funcionalidad abre muchas oportunidades para crear y manipular estructuras de datos sobre la marcha, especialmente beneficioso en análisis de datos y otras aplicaciones del mundo real.

Función zip() de Python con Iterables Desordenados

Mientras que las listas son colecciones ordenadas, algunas colecciones de Python como los conjuntos (sets) y los diccionarios son desordenados, lo que significa que sus elementos no tienen un orden específico. ¿Qué sucede si utilizamos la función zip() con tales iterables?

Cuando se utiliza con colecciones desordenadas, la función zip() seguirá produciendo tuplas, pero el orden de estas tuplas dependerá de cómo Python ordene internamente los elementos de las colecciones.

conjunto1 = {"manzana", "plátano", "cereza"}
conjunto2 = {1, 2, 3}
combinado_conjunto = zip(conjunto1, conjunto2)
print(list(combinado_conjunto))

Recuerda, la salida podría ser diferente en diferentes ejecuciones, ya que los conjuntos no tienen un orden específico.


En la sección anterior, exploramos algunos usos comunes de la función zip() de Python. En esta continuación, nos sumergiremos aún más en esta función versátil, ilustrando sus aplicaciones en diferentes escenarios y comparándola con otras funciones de Python.

Solución de Problemas del Mundo Real con la función zip() de Python

La función zip() de Python puede ser una excelente herramienta para resolver diversos problemas de programación. Ya sea que estés lidiando con big data o simplemente creando diccionarios sobre la marcha, la función zip() a menudo brinda una solución elegante.

Considera un escenario en el que estás trabajando con dos listas: una que contiene nombres de productos y la otra, sus respectivos precios. Si deseas encontrar el producto con el precio máximo, puedes hacerlo fácilmente con la función zip().

productos = ["Manzanas", "Plátanos", "Cerezas"]
precios = [1.5, 0.5, 3.2]
 
# Combina las dos listas y usa la función max()
producto_precio_maximo = max(zip(precios, productos))
print(producto_precio_maximo)

La salida será la tupla con el precio máximo, mostrando el producto con el costo más alto.

zip() de Python vs enumerate() Function

Tanto zip() como enumerate() son funciones integradas de Python que trabajan con iterables. La función zip(), como hemos visto, se utiliza para iterar sobre múltiples iterables al mismo tiempo, mientras que la función enumerate() agrega un contador a un iterable y devuelve un objeto enumerate.

Si bien estas funciones pueden parecer similares, cumplen propósitos distintos. La función zip() es ideal para escenarios en los que necesitas recorrer múltiples listas en paralelo o crear diccionarios de forma dinámica. En contraste, la función enumerate() brilla cuando necesitas tener un contador automático junto con los elementos de una lista en escenarios como imprimir el índice de los elementos o recorrer una lista con el índice del elemento.

Función zip() de Python para Crear Diccionarios

Como vimos antes, la función zip() de Python puede ser particularmente poderosa cuando se usa para crear diccionarios. Esto es especialmente útil cuando se trabaja con conjuntos de datos grandes donde la creación manual de diccionarios sería impracticable. La función zip() de Python nos permite construir diccionarios de forma dinámica, ahorrando tiempo y esfuerzo, y haciendo que nuestro código sea más legible y eficiente.

nombres = ["Alice", "Bob", "Charlie"]
edades = [25, 30, 35]
diccionario_persona = dict(zip(nombres, edades))
print(diccionario_persona)

Esto imprimirá:

{'Alice': 25, 'Bob': 30, 'Charlie': 35}

Conclusión

Esto concluye nuestra inmersión profunda en la función zip() de Python. Ya sea que estés recorriendo varias listas en paralelo, creando diccionarios de forma dinámica o simplemente intentando escribir un código más limpio y eficiente, zip() puede ser una herramienta invaluable en tu caja de herramientas de Python.

Preguntas frecuentes

  1. ¿Qué es la función zip() de Python?

    La función zip() es una función integrada de Python que te permite iterar sobre múltiples listas u otros objetos iterables en paralelo. Combina los elementos correspondientes de cada iterable y devuelve un objeto zip que consiste en tuplas.

  2. ¿Cómo funciona la función zip() de Python con listas de diferentes longitudes?

    Cuando la función zip() se utiliza con listas de diferentes longitudes, la longitud del resultado se determina por la lista más corta. Los elementos adicionales de la lista más larga simplemente se ignoran.

  3. ¿Se puede utilizar la función zip() de Python con conjuntos y diccionarios?

    Sí, la función zip() se puede utilizar con cualquier tipo de objeto iterable, incluyendo conjuntos y diccionarios. Sin embargo, ten en cuenta que los conjuntos y diccionarios son colecciones desordenadas, por lo que el orden de los elementos en las tuplas resultantes puede no ser predecible.