组合列表:将三个列表合并为一个新列表

时间:2013-12-08 21:02:11

标签: python list

我有三个包含x,y和z位置的列表。例如:

x = [10,20,1]
y = [10,15,2]
z = [12,23,3]

我想使用以下内容创建一个列表:

xyz = [[10,10,12], [20,15,23], [1,2,3]]

这些名单很大(100万条)。 有什么好办法呢?

谢谢!

3 个答案:

答案 0 :(得分:4)

您正在寻找zip内置功能:

>>> x = [10,20,1]
>>> y = [10,15,2]
>>> z = [12,23,3]
>>> zip(x, y, z)
[(10, 10, 12), (20, 15, 23), (1, 2, 3)]

这会生成一个元组列表。如果您绝对需要列表列表,请手动强制使用这些元组:

>>> [list(t) for t in zip(x, y, z)]
[[10, 10, 12], [20, 15, 23], [1, 2, 3]]

请注意,在Python 3中,zip返回一个惰性迭代器而不是一个列表(与Python 2中的itertools.izip相同)。如果你的列表很大,那实际上可能更好,但请记住,迭代器不是可订阅的。

答案 1 :(得分:2)

对于Python 2.x,您可以使用izip:

from itertools import izip

for a,b,c in izip(x,y,z):
    # do something

这会遍历列表而不是复制数据。

答案 2 :(得分:0)

这是一种手动方式(如果您有兴趣):

>>> xyz = []
>>> x = [10, 20, 1]
>>> y = [10, 15, 2]
>>> z = [12, 23, 3]
>>> 
>>> for num in range(3): #Change 3 to however many numbers u want
...     xyz.append([x[num], y[num], z[num]])
... 
>>> print xyz
[[10, 10, 12], [20, 15, 23], [1, 2, 3]]

希望这有帮助!