附加在列表列表中
Appending in lists of list
我有以下列表:
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])
结果还可以,但我想使用列表理解(如果可能,或其他更优雅的方式)在一行中完成。我可以理解一个简单的列表理解,但不会更复杂。
这应该可以解决问题:
[x + [y] for x, y in zip(listA, listB)]
列表理解不用于替换(修改)现有对象,但要创建新对象,您可以通过压缩元素来实现
listA = [a + [b] for a, b in zip(listA, listB)]
但是请注意,这实际上在时间上是线性的,它会破坏旧的 listA
并创建新的,而您的原始代码效率更高,因为它只修改 listA
对象。
最有效和 pythonic 的方法是连接这两个并调用
for a, b in zip(listA, listB):
a.append(b)
我有以下列表:
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])
结果还可以,但我想使用列表理解(如果可能,或其他更优雅的方式)在一行中完成。我可以理解一个简单的列表理解,但不会更复杂。
这应该可以解决问题:
[x + [y] for x, y in zip(listA, listB)]
列表理解不用于替换(修改)现有对象,但要创建新对象,您可以通过压缩元素来实现
listA = [a + [b] for a, b in zip(listA, listB)]
但是请注意,这实际上在时间上是线性的,它会破坏旧的 listA
并创建新的,而您的原始代码效率更高,因为它只修改 listA
对象。
最有效和 pythonic 的方法是连接这两个并调用
for a, b in zip(listA, listB):
a.append(b)