Python中的Zip列表

2020-12-04 15:34:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习如何“压缩”列表。为此,我有一个程序,在特定的点上,我执行以下操作:

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

这给了我三个列表,x1x2,和x3,每一个都是20号。

现在,我知道了:

zipall = zip(x1, x2, x3)

但是,当我这样做时:

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

我得到20,这不是我所期望的。我预期是三个。我认为我做了一些根本性的错误。

3条回答
网友
1楼 ·

在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))
网友
2楼 ·

当您将包含20个元素的三个列表放在一起时,结果有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

当然,如果列表一开始是空的,这就不起作用。

网友
3楼 ·

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...

并将它们“zips”到一个列表中,该列表的条目是3元组(ai, bi, ci)。想象一下从左到右水平画一个拉链。

相关问题