如何在python中将两个维度列表合并为一个点列表

如何在python中将两个维度列表合并为一个点列表,python,list,Python,List,假设我有: x1 = [1, 2, 3, 4] x2 = [1, 4, 9, 16] 我如何将它们组合为点: points = [[1,1],[2,4], ...] 你在找我 如果没有特别的理由让元素成为列表,只需单独使用zip,即可生成元组的迭代器(Python3)或列表(Python2) >>> list(zip(X1, X2)) # or just zip(X1, X2) in Python 2 >>> [(1, 1), (2, 4), (3, 9)

假设我有:

x1 = [1, 2, 3, 4]
x2 = [1, 4, 9, 16]
我如何将它们组合为点:

points = [[1,1],[2,4], ...]
你在找我

如果没有特别的理由让元素成为列表,只需单独使用
zip
,即可生成元组的迭代器(Python3)或列表(Python2)

>>> list(zip(X1, X2)) # or just zip(X1, X2) in Python 2
>>> [(1, 1), (2, 4), (3, 9), (4, 16)]
如果您甚至不需要同时在内存中使用所有这些对,例如,如果您只想对它们进行迭代,那么不要构建列表。在Python3中,
zip
生成迭代器

>>> pairs = zip(X1, X2)
>>> for pair in pairs:
...:    print(pair)
...:    
(1, 1)
(2, 4)
(3, 9)
(4, 16)
>>> 
>>> pairs = zip(X1, X2)
>>> next(pairs)
>>> (1, 1)
>>> next(pairs)
>>> (2, 4)

最后,如果希望在Python 2中使用Python 3
zip
,请使用from
itertools
use
zip
map
同时迭代列表:

x1 = [1, 2, 3, 4]
x2 = [1, 4, 9, 16]

print(list(map(list, zip(x1, x2))))
# [[1, 1], [2, 4], [3, 9], [4, 16]]

zip(x1,x2)
返回压缩值的元组。我们使用
map
将这些元组转换为列表以匹配所需的输出。由于Python3中的
map
生成了一个map对象,因此我们再次将其强制转换为list以匹配所需的输出。

您需要
zip
函数:

>>> for pair in zip(x1, x2):
...    print(pair)
...
(1, 1)
(2, 4)
(3, 9)
(4, 16)
>>>
它生成一个元组序列,每个元组包含来自每个参数的一个值——在本例中,使用两个参数,您将得到两个元素元组

如果您确实需要列表,请使用

for pair in zip(x1, x2):
    print(list(pair))

另外,要小心,因为如果所有参数的长度不完全相同,则在最短的参数用尽后,zip会自动删除剩余的任何值。

可以复制,但其他问题的标题并不是那么简单。所以我没有找到它们。这看起来有点笨拙,
地图
让它更难理解。有更简单的方法来生成所需的列表。例如,@holdenweb,
map
对我来说从来都不难理解。此外,如果您的列表非常大,这可能会执行惰性操作,这有时非常方便。生成器表达式
([a,b]在zip(x1,x2)中表示(a,b))
,除非我弄错了<代码>映射并不是把所有Python问题都变成钉子的锤子!
for pair in zip(x1, x2):
    print(list(pair))