【发布时间】:2021-01-21 19:45:42
【问题描述】:
我必须开始将向量从其末端循环到零。当我遇到值 0 时,我需要将其替换为 三个 预览值的总和。例外情况是遇到第一个零,我只需要将前两个值相加即可。
例如
v = [0, 5, 5, 0, 6, 6, 0, 7, 7 ]
预期结果:
v = [36, 5, 5, 26, 6, 6, 14, 7, 7 ]
代码
for i in range(len(v), 0):
if v == 0 :
v[i] = v[i+1] + v[i+2] + v[i+3]
代码不工作。我哪里错了?
【问题讨论】:
-
if v == 0 :是错误的。v[i] = v[i+1] + v[i+2] + v[i+3]对i >= len(v) - 3是错误的。sum(v[i+1:i+3])可以在这里提供帮助。 -
range(len(v), -1, -1) -
尝试 v[::-1] 使列表向后排序
-
@ArthurHarduim 这在这里没用,因为他分配给列表元素并且需要索引反向。
标签: python arrays loops for-loop