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!