2024-04-23 09:21:50 发布
网友
我正在努力学习如何“压缩”列表。为此,我有一个程序,在特定的点上,我执行以下操作:
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接受一系列列表
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)。想象一下从左到右水平画一个拉链。
(ai, bi, ci)
在Python2.7中,这可能工作得很好:
>>> a = b = c = range(20) >>> zip(a, b, c)
但在Python3.4中应该是这样(否则,结果将类似于<zip object at 0x00000256124E7DC8>):
<zip object at 0x00000256124E7DC8>
>>> a = b = c = range(20) >>> list(zip(a, b, c))
当您将包含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
当然,如果列表一开始是空的,这就不起作用。
zip
接受一系列列表并将它们“zips”到一个列表中,该列表的条目是3元组
(ai, bi, ci)
。想象一下从左到右水平画一个拉链。在Python2.7中,这可能工作得很好:
但在Python3.4中应该是这样(否则,结果将类似于
<zip object at 0x00000256124E7DC8>
):当您将包含20个元素的三个列表放在一起时,结果有20个元素。每个元素是一个三元组。
你自己看看:
要找出每个元组包含多少个元素,可以检查第一个元素的长度:
当然,如果列表一开始是空的,这就不起作用。
相关问题 更多 >
编程相关推荐