我正在寻找以下算法/算法技巧的通用名称。
xs = [0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1]
ys = [xs[0]]
for i in range(1, len(xs)):
if xs[i] == 1:
ys.append(ys[i - 1] + 1)
else:
ys.append(ys[i - 1])
print ys
# prints: [0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5]
也就是说,累积在 中的某个索引处看到的 1 的数量xs
。另外,有没有更简洁的方法来做到这一点?欢迎 Scala、Python 和 Haskell 回答。