我想在 Python 中获取一个数字列表,并用之前的非零值替换所有零,例如[1, 0, 0, 2, 0]
应该给出 [1,1,1,2,2]
。我知道列表中的第一个条目是非零的,所以初始化应该不是问题。我可以在循环中完成,但是有没有更 Pythonic 的方法来做到这一点?
澄清:这应该适用于任何数字列表,例如[100.7, 0, -2.34]
应该变成 [100.7, 100.7, -2.34]
。
最佳答案
这可以在一个很短的循环中完成:
a = [1, 0, 0, 2, 0]
b = []
for i in a:
b.append(i if i else b[-1])
print b
# [1, 1, 1, 2, 2]
仅当存在先前的非零值时才有效(即,如果 a 以 0 开头则失败)。
由于无法从内部引用列表理解,因此不能将其设为列表理解
关于python:用以前的非零值替换零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22043919/