我有三个包含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万条)。 有什么好办法呢?
谢谢!
答案 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]]
希望这有帮助!