打开包装并添加新物品

时间:2013-07-22 18:34:56

标签: python list merge

我需要创建一个合并两个列表的新列表,其中一个列表是列表。这就是我需要做的事情:

a = [[2, 1, 4, 5, 0], [3, 6, 5, 4, 8], [2, 1, 4, 7, 8], [3, 4, 9, 5, 6], [7, 5, 2, 1, 1]]
b = [2, 3, 5, 0, 8]
c = []

for indx, item in enumerate(a):
    c.append([item, b[indx]])

这会生成c

[[[2, 1, 4, 5, 0], 2], [[3, 6, 5, 4, 8], 3], [[2, 1, 4, 7, 8], 5], [[3, 4, 9, 5, 6], 0], [[7, 5, 2, 1, 1], 8]]

但我需要它看起来像:

[[2, 1, 4, 5, 0, 2], [3, 6, 5, 4, 8, 3], [2, 1, 4, 7, 8, 5], [3, 4, 9, 5, 6, 0], [7, 5, 2, 1, 1], 8]

我尝试在*前添加item来解压缩元素,但这不起作用。

2 个答案:

答案 0 :(得分:2)

只需连接项目即可item创建列表,并b中的元素:

for indx, item in enumerate(a):
    c.append(item + [b[indx]])

您可以使用zip() function

简化循环
for a_item, b_item in zip(a, b):
    c.append(a_item + [b_item])

然后将c的整个定义移到列表理解中:

c = [a_item + [b_item] for a_item, b_item in zip(a, b)]

演示:

>>> a = [[2, 1, 4, 5, 0], [3, 6, 5, 4, 8], [2, 1, 4, 7, 8], [3, 4, 9, 5, 6], [7, 5, 2, 1, 1]]
>>> b = [2, 3, 5, 0, 8]
>>> [a_item + [b_item] for a_item, b_item in zip(a, b)]
[[2, 1, 4, 5, 0, 2], [3, 6, 5, 4, 8, 3], [2, 1, 4, 7, 8, 5], [3, 4, 9, 5, 6, 0], [7, 5, 2, 1, 1, 8]]

答案 1 :(得分:2)

您可以使用zip()功能和列表理解

>>> a = [[2, 1, 4, 5, 0], [3, 6, 5, 4, 8], [2, 1, 4, 7, 8], [3, 4, 9, 5, 6], [7, 5, 2, 1, 1]]
>>> b = [2, 3, 5, 0, 8]
>>> [elem1 + [elem2] for elem1, elem2 in zip(a, b)]
[[2, 1, 4, 5, 0, 2], [3, 6, 5, 4, 8, 3], [2, 1, 4, 7, 8, 5], [3, 4, 9, 5, 6, 0], [7, 5, 2, 1, 1, 8]]
相关问题