我想在 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/

10-11 11:20