Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Uso de zip() sin necesidad de especificar el tipo de Iterable

En el siguiente ejemplo del curso se usa zip directamente pero hasta ahora hemos visto que eso solo genera una dirección de memoria, porqué aquí sí se lo pudo usar directamente sin tener que especificar a que tipo de Iterable convertirlo?

alturas = [1.70, 1.80, 1.65, 1.75, 1.90]
pesos = [65, 80, 58, 70, 95]

imc = [round((peso / altura**2), 1) for altura, peso in zip(alturas, pesos)]
print(imc)
1 respuesta

Hola Bryan,

¡Qué buena pregunta! En Python, la función zip() se utiliza para combinar elementos de múltiples iterables (como listas, tuplas, etc.) en pares, o en este caso, en tuplas de dos elementos. Cuando usas zip(alturas, pesos), lo que estás haciendo es crear un iterable que contiene tuplas, donde cada tupla tiene un elemento de alturas y un elemento de pesos en la misma posición.

El resultado de zip() es un objeto de tipo zip, que es un iterable. Por eso, cuando lo usas directamente en un bucle o en una comprensión de listas, no necesitas convertirlo explícitamente a otro tipo de iterable, como una lista o una tupla. Python maneja este objeto zip de manera que puedes iterar sobre él directamente.

En el ejemplo que mencionas:

imc = [round((peso / altura**2), 1) for altura, peso in zip(alturas, pesos)]

La comprensión de listas está iterando sobre el objeto zip, desempaquetando cada tupla en altura y peso, y calculando el IMC para cada par. El resultado final es una lista de los IMCs calculados.

Espero que esto aclare por qué no necesitas convertir el objeto zip a otro tipo de iterable antes de usarlo. Espero haber ayudado y buenos estudios!