我想用前面的变量(对于所有连续的无)替换 None
中的 list
。我用 if
和 for
(多行)做到了。有没有办法在一行中做到这一点?即列表推导式、Lambda 和/或映射
我的想法是使用列表理解,但我无法在列表理解中分配变量来设置以前的值。
我的项目中有一个类似的场景以这种方式处理 None
,问题是我不想为小功能编写 10 行代码。
def none_replace(ls):
ret = []
prev_val = None
for i in ls:
if i:
prev_val = i
ret.append(i)
else:
ret.append(prev_val)
return ret
print('Replaced None List:', none_replace([None, None, 1, 2, None, None, 3, 4, None, 5, None, None]))
输出:Replaced None List: [None, None, 1, 2, 2, 2, 3, 4, 4, 5, 5, 5]
最佳答案
在 Python 3.8 或更高版本中,您可以使用 assignment operator 执行此操作:
def none_replace(ls):
p = None
return [p:=e if e is not None else p for e in ls]
关于python - 如何用以前的值替换列表中的无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64132044/