2016-01-09 95 views
2

我有以下列表的列表:追加在列表

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]) 

结果好吧,但我想用列表理解(如果可能,或另一种更优雅的方式)在一行中做到这一点。我可以理解一个简单的列表理解,但不是更复杂。

+1

所以,你要的第1个要素B中追加到A中的第一个列表,第二个元素A中的第二个列表等等。? – Chris

+0

是的。感谢您的评论,我编辑我的问题更加清晰。 –

回答

5

列表理解不用于备用(修改)现有的对象,而是要创造新的,例如,您可以通过拉上你的元素

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

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

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

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

这应该做的伎俩:

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