在python中高效合并两个列表列表

时间:2017-03-21 19:45:42

标签: python list

如何有效地合并两个列表? 以下是给出错误结果的代码。不确定。为什么呢?

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]来更正结果。但是,我认为它会非常低效,因为它会导致创建一个全新的列表。仅供参考,如果可能,每个列表将遍历大量需要缓存友好的列表。

1 个答案:

答案 0 :(得分:1)

从重复的问题中可以看出,您只是引用a中每个元素的相同列表副本。您也可以这样做以获得所需的输出:

>>> [x + y for x, y in zip(a, b)]
[[1], [], [], [2], []]