Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] No me queda claro la función de *zip

Hola, estaba leyendo la url adjunta (de la documentación) y ví la aplicación de *zip sin embargo no me queda claro para que usarla?. Este es el ejemplo de la documentación:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True

por si solo aplicando *zip me sale un error de sintaxis, por lo que necesito de algo adicional como por ejemplo zip(*zip()) pero se me hace algo no util usarlo, sería como aplicar para el ejemplo:

tuple(x)
tuple(y)

les agradecería su respuesta con ejemplos prácticos de cómo usar zip en el contexto de la analítica de datos en caso de tener aplicabilidad.

2 respuestas

Hola, Mario! Súper buena tu pregunta, en mi día a día uso el zip para combinar elementos de varias listas en una sola estructura de datos. Algunos ejemplos que apliqué en ejercicios prácticos:

  1. Comparar las ventas entre periodos:
ventas_mes_actual = [100, 150, 200, 180, 220]
ventas_mes_anterior = [80, 120, 160, 140, 180]

comparacion_ventas = []

for venta_actual, venta_anterior in zip(ventas_mes_actual, ventas_mes_anterior):
    diferencia = venta_actual - venta_anterior
    comparacion_ventas.append(diferencia)

promedio_diferencia = sum(comparacion_ventas) / len(comparacion_ventas)

print(f'Comparación de ventas entre meses:')
for i, diferencia in enumerate(comparacion_ventas):
    print(f'Día {i+1}: Diferencia de {diferencia} unidades')

print(f'Promedio de diferencia: {promedio_diferencia}')
  1. Ventas por categoria
productos = ['Camisa', 'Pantalón', 'Zapatos', 'Vestido', 'Bolso']
categorias = ['Ropa', 'Ropa', 'Zapatos', 'Ropa', 'Accesorios']

ventas_por_categoria = {}

for producto, categoria in zip(productos, categorias):
    if categoria not in ventas_por_categoria:
        ventas_por_categoria[categoria] = []
    ventas_por_categoria[categoria].append(producto)

for categoria, productos in ventas_por_categoria.items():
    print(f'Categoría: {categoria}')
    print(f'Productos: {", ".join(productos)}')
    print(f'Total de productos vendidos: {len(productos)}')
    print('---')

Abrazos :D

Hola Erika, gracias por tu respuesta.

Sin embargo mi duda no estaba relacionada con zip() sino con *zip() con un * antes de zip. Me pareció curiosa porque desempaqueta al parecer los datos pero necesita de un zip() previamente para que funcione. Por eso la duda, esto *zip() se llega a usar en la analítica de datos?

No me queda claro como usarlo.