将列表有效地合并到稀疏列表中

xor*_*yst 7 python performance list

我有两个清单:

a = [None, None, 1, None, 4, None, None, 5, None]
b = [7,8,2,3,6,9]
Run Code Online (Sandbox Code Playgroud)

我想合并它们,要么创建一个新列表,要么只是通过用b中的值填充Nones来更新a,所以

a = [7,8,1,2,4,3,6,5,9]
Run Code Online (Sandbox Code Playgroud)

这样做最有效的方法是什么?

对于扩展,我会想要对b的每个排列都这样做.这是否允许简化技术?

Rak*_*esh 6

这是一种方法.使用列表推导并转换b为迭代器对象.

演示:

a = [None, None, 1, None, 4, None, None, 5, None]
b = [7,8,2,3,6,9]
b = iter(b)

print( [next(b) if i is None else i for i in a] )
Run Code Online (Sandbox Code Playgroud)

输出:

[7, 8, 1, 2, 4, 3, 6, 5, 9]
Run Code Online (Sandbox Code Playgroud)