我正在尝试学习如何“压缩”列表。为此,我有一个程序,在某个特定点,我执行以下操作:
x1, x2, x3 = stuff.calculations(withdataa)
这给了我三个列表,x1,x2和x3,每个列表,例如,大小为 20。
x1
x2
x3
现在,我这样做:
zipall = zip(x1, x2, x3)
但是,当我这样做时:
print "len of zipall %s" % len(zipall)
我得到了 20,这不是我所期望的。我预计三个。我认为我做的事情根本上是错误的。
当您zip()将三个列表组合在一起时,每个列表包含 20 个元素,结果有 20 个元素。每个元素都是一个三元组。
zip()
你自己看:
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)]
要找出每个元组包含多少个元素,您可以检查第一个元素的长度:
In [3]: result = zip(a, b, c) In [4]: len(result[0]) Out[4]: 3
当然,如果列表一开始是空的,这将不起作用。