将两个二维列表连接到一个新列表中

时间:2016-10-13 17:56:12

标签: python list

DISLCAIMER:我是Python的新手

我想通过组合2个现有的2-D列表在Python中创建连接的2-D列表。我从2个列表开始:

listA = [[a, b, c], [1, 2, 3]]
listB = [[d, e, f], [4, 5, 6]]

我想创建一个新列表(同时保留listA和listB):

listC = [[a, b, c, d, e, f], [1, 2, 3, 4, 5, 6]]

如果我尝试将它们添加为一维列表,我会得到:

listA + listB
result = [[a, b, c], [1, 2, 3], [d, e, f], [4, 5, 6]]

我也尝试过:

listC = listA
listC[0] += listB[0]
listC[1] += listB[1]

# This may be giving me the result I want, but it corrupts listA:

Before: listA = [[a, b, c], [1, 2, 3]
After:  listA = [[a, b, c, d, e, f], [1, 2, 3, 4, 5, 6]]

制作我想要的数据的新列表的正确方法是什么?

我也可以使用元组:

listC = [(a, 1), (b, 2), (c, 3), (d, 4), (e, 5), (f, 6)]

但是也不知道这种方法。

我目前正在使用Python 2.7(运行raspbian Jessie的raspberry pi),但如果需要,可以使用Python 3.4。

3 个答案:

答案 0 :(得分:2)

有几种方法:

listC = [listA[0] + listB[0], listA[1] + listB[1]]

listC = [x + y for x, y in zip(listA, listB)]

可能是最简单的两个

答案 1 :(得分:1)

创建一个新列表,例如list-comprehension

listC = [a+b for a,b in zip(listA, listB)]

答案 2 :(得分:1)

如果您想要了解更多内容,这是一种功能性方法:

In [13]: from operator import add
In [14]: from itertools import starmap

In [15]: list(starmap(add, zip(listA, listB)))
Out[15]: [['a', 'b', 'c', 'd', 'e', 'f'], [1, 2, 3, 4, 5, 6]]

请注意,如果您不希望将结果放在列表中,那么starmap会返回迭代器(如果您只想迭代结果),则不应该使用{{1}这里。