我正在努力学习如何“压缩”列表。为此,我有一个程序,其中在特定的点上,我执行以下操作:
x1, x2, x3 = stuff.calculations(withdataa)
这给了我三个列表,x1
、x2
和x3
,每个列表的大小都是20。
现在,我做到了:
zipall = zip(x1, x2, x3)
然而,当我这样做的时候:
print "len of zipall %s" % len(zipall)
我得到了20分,这并不是我所期望的。我还以为有三个呢。我认为我正在做一些根本错误的事情。
发布于 2012-12-04 22:15:12
当您将包含20个元素的三个列表zip()
在一起时,结果为20个元素。每个元素都是一个三元组。
你自己看一下:
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
当然,如果列表一开始就是空的,那么这就不会起作用。
发布于 2012-12-04 22:18:26
zip
有一堆像这样的列表
a: a1 a2 a3 a4 a5 a6 a7...
b: b1 b2 b3 b4 b5 b6 b7...
c: c1 c2 c3 c4 c5 c6 c7...
并将它们“压缩”到一个列表中,该列表的条目是3元组(ai, bi, ci)
。想象一下从左到右水平绘制一条拉链。
发布于 2015-05-01 08:37:23
在Python2.7中,这可能工作得很好:
>>> a = b = c = range(20)
>>> zip(a, b, c)
但在Python3.4中应该是这样(否则,结果将类似于<zip object at 0x00000256124E7DC8>
):
>>> a = b = c = range(20)
>>> list(zip(a, b, c))
https://stackoverflow.com/questions/13704860
复制相似问题