从Python中的两个列表创建(嵌套)列表

时间:2014-01-21 13:58:42

标签: python python-2.7 list nested-lists

你好我想从两个数组创建一个数组,但我不想用append()或extend()来创建这个新的数组。

输入数组具有相同的行数和列数:

listone = [1,2,3]
listtwo = [4,5,6]

我们期待的结果:

mergedlist = [[1,4],[2,5],[3,6]]

无法通过

完成
mergedlist = listone.append(listtwo) or mergedlist = listone.extend(listtwo)

我想得到

mergedlist = [[1,4],[2,5],[3,6]]

如何获得所需的输出?

这是一个简单的例子,真正的一个有14个文件,35行和61个数组。


对于一维,答案是正确的,但是当你有列表数组时

listone = [[1,2,3],[1,2,3],[1,2,3]]
listtwo = [4,5,6]

我想得到

result = [[1,2,3,4],[1,2,3,5],[1,2,3,6]]

当我使用merged = map(list,zip(listone,listtwo))

My result is [[[1, 2, 3], 4], [[1, 2, 3], 5], [[1, 2, 3], 6]] that is Bad

2 个答案:

答案 0 :(得分:6)

使用内置zip功能。这正是你想要的。从python手册:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

或者如果你想要一个列表列表而不是一个元组列表,你可以使用zip列表理解:

>>> zipped = [list(t) for t in zip(x, y)]
>>> zipped
[[1, 4], [2, 5], [3, 6]]

答案 1 :(得分:2)

尝试:

listone = [1,2,3]
listtwo = [4,5,6]

merged = map(list, zip(listone, listtwo))

zip(listone, listtwo)将返回元组列表。由于您需要列表列表,因此需要将每个元组转换为列表。 map(list, list_of_tuples)电话会做到这一点。