Search code examples
pythonlistpython-2.7python-zip

Zip lists in Python


I am trying to learn how to "zip" lists. To this end, I have a program, where at a particular point, I do the following:

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

This gives me three lists, x1, x2, and x3, each of, say, size 20.

Now, I do:

zipall = zip(x1, x2, x3)

However, when I do:

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

I get 20, which is not what I expected. I expected three. I think I am doing something fundamentally wrong.


Solution

  • When you zip() together three lists containing 20 elements each, the result has twenty elements. Each element is a three-tuple.

    See for yourself:

    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)]
    

    To find out how many elements each tuple contains, you could examine the length of the first element:

    In [3]: result = zip(a, b, c)
    
    In [4]: len(result[0])
    Out[4]: 3
    

    Of course, this won't work if the lists were empty to start with.