Python 成对列表

Python 成对列表,python,python-3.x,list,Python,Python 3.x,List,我有两个列表,我想创建一个列表列表,但保留顺序,因此如果我有: l1 = [1,2,3,2] l2 = [2,3,4,1] 我希望: ans = [[1,2],[2,3],[3,4],[2,1]] 它包含索引的顺序 谢谢大家! EDIT:izip仅用于python2。在Python3中,内置的zip与2.x中的itertools.izip执行相同的工作(返回迭代器而不是列表) >>> l1 = [1,2,3,2] >>> l2 = [2,3,4,1] &g

我有两个列表,我想创建一个列表列表,但保留顺序,因此如果我有:

l1 = [1,2,3,2]
l2 = [2,3,4,1]
我希望:

ans = [[1,2],[2,3],[3,4],[2,1]]
它包含索引的顺序


谢谢大家!

EDIT:
izip
仅用于python2。在Python3中,内置的zip与2.x中的itertools.izip执行相同的工作(返回迭代器而不是列表)

>>> l1 = [1,2,3,2]
>>> l2 = [2,3,4,1]
>>> ans = [[1,2],[2,3],[3,4],[2,1]]
>>> [list(v) for v in zip(l1, l2)]
[[1, 2], [2, 3], [3, 4], [2, 1]]
>>> assert _ == ans
使用
zip

l1 = [1,2,3,2]
l2 = [2,3,4,1]

zip(l1, l2)
# [(1, 2), (2, 3), (3, 4), (2, 1)]
请注意
zip
return
list
type:

type(zip(l1, l2))
# <type 'list'>

您可以使用
zip

ans = [[a, b] for a, b in zip(l1, l2)]
  • 你可以找到一个关于zip-in的好教程

如果一个列表比另一个长,您可以使用
zip\u longest
(有文档记录):


您可以简单地执行以下操作:

l1 = [1,2,3,2]
l2 = [2,3,4,1]

ans = zip(l1, l2) #convert to tuples

ans = map(list, ans) #convert every tuples to list

for pairs in ans:
    print pairs

您可以使用
zip
函数来完成

zip()函数接受iterables(可以是零或更多),生成迭代器,根据传递的iterables聚合元素,并返回元组迭代器

代码:

l1 = [1,2,3,2]
l2 = [2,3,4,1]
ans = zip(l1,l2)
final = []
for i in ans:
    final.append(i)
print(final)
[(1, 2), (2, 3), (3, 4), (2, 1)]
输出:

l1 = [1,2,3,2]
l2 = [2,3,4,1]
ans = zip(l1,l2)
final = []
for i in ans:
    final.append(i)
print(final)
[(1, 2), (2, 3), (3, 4), (2, 1)]

内置代码几乎完全是您想要的:
zip(l1,l2)
。要生成您想要的精确输出,
[[x,y]for x,y in-zip(l1,l2)]
谢谢!刚刚意识到我的问题是多么愚蠢,因为您使用的是Python 2。OP明确请求了,这方面的一切都不一样。:)(例如,
itertools.izip
不存在,并且
zip
返回一个迭代器。)糟糕的是,我甚至没有注意到他的标签:DYou有足够的声誉将其作为一个副本关闭。这可能有10多个副本