Listas zip en Python

Resuelto AJW asked hace 11 años • 9 respuestas

Estoy intentando aprender a "comprimir" listas. Para ello tengo un programa, donde en un punto determinado hago lo siguiente:

x1, x2, x3 = stuff.calculations(withdataa)

Esto me da tres listas, x1, x2y x3, cada una de, digamos, tamaño 20.

Ahora lo hago:

zipall = zip(x1, x2, x3)

Sin embargo, cuando lo hago:

print "len of zipall %s" % len(zipall)

Me sale 20, que no es lo que esperaba. Esperaba tres. Creo que estoy haciendo algo fundamentalmente mal.

AJW avatar Dec 04 '12 21:12 AJW
Aceptado

Cuando zip()juntas tres listas que contienen 20 elementos cada una, el resultado tiene veinte elementos. Cada elemento es una tupla triple.

Ver por ti mismo:

In [1]: a = b = c = range(20)

In [2]: zip(a, b, c)
Out[2]: 
[(0, 0, 0),
 (1, 1, 1),
 ...
 (17, 17, 17),
 (18, 18, 18),
 (19, 19, 19)]

Para saber cuántos elementos contiene cada tupla, puedes examinar la longitud del primer elemento:

In [3]: result = zip(a, b, c)

In [4]: len(result[0])
Out[4]: 3

Por supuesto, esto no funcionará si las listas estuvieran vacías para empezar.

NPE avatar Dec 04 '2012 14:12 NPE

ziptoma un montón de listas de me gusta

a: a1 a2 a3 a4 a5 a6 a7...
b: b1 b2 b3 b4 b5 b6 b7...
c: c1 c2 c3 c4 c5 c6 c7...

y los "comprime" en una lista cuyas entradas son 3 tuplas (ai, bi, ci). Imagínese dibujar una cremallera horizontalmente de izquierda a derecha.

Katriel avatar Dec 04 '2012 14:12 Katriel