如何有效地合并两个列表? 以下是给出错误结果的代码。不确定。为什么呢?
a = [[]] * 5
b = [[1], [] , [], [2], []]
for i in range(0, len(a)):
if b[i]:
a[i] += b[i]
预期产出:
[[1], [], [], [2], []]
实际输出:
[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
可以通过将a[i] += b[i]
重写为a[i] = a[i] + b[i]
来更正结果。但是,我认为它会非常低效,因为它会导致创建一个全新的列表。仅供参考,如果可能,每个列表将遍历大量需要缓存友好的列表。
答案 0 :(得分:1)
从重复的问题中可以看出,您只是引用a
中每个元素的相同列表副本。您也可以这样做以获得所需的输出:
>>> [x + y for x, y in zip(a, b)]
[[1], [], [], [2], []]