附加在列表中

时间:2016-01-09 19:14:08

标签: python list-comprehension

我有以下列表:

listA = [[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]
listB = [1,2,3,4]

我希望:

listC = [[1, 1, 1, 1, 1], [1, 1, 1, 1, 2], [1, 1, 1, 1, 3], [1, 1, 1, 1, 4]]

我使用以下代码:

for i in range(len(listA)):
     listA[i].append(listB[i])

结果还可以,但我希望使用列表理解(如果可能,或其他更优雅的方式)在一行中完成。我可以理解一个简单的列表理解,但不是更复杂。

2 个答案:

答案 0 :(得分:7)

这应该可以解决问题:

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

答案 1 :(得分:5)

列表理解不用于交替(修改)现有对象,但是为了创建新对象,你可以通过压缩元素来实现它

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

但是请注意,这实际上是线性的,它会破坏旧的listA并创建新的代码,而原始代码更有效,因为它只修改listA对象。

最有效和pythonic的方式是连接这两个并调用

for a, b in zip(listA, listB):
    a.append(b)