我正在尝试学习如何“压缩”列表。为此,我有一个程序,在某个特定位置执行以下操作:
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
当然,如果列表开头是空的,这将不起作用。