首页 > 解决方案 > 当不相等时,Python 用前 2 项总和替换每 3 个值

问题描述

给定列表是 n=[3,1,5,9,6,14] ,将 5 替换为 3+1,将 14 替换为 9+6。输出看起来像 [3,1,4,9,6,15]

我的方法是使用范围并赋值 i+ [i+1]==[i+2]

我尝试了两种方法,但在这两种情况下我都超出了异常

#Approach 1
for idx,item in enumerate(n):
  if (idx + (idx+1))!=(idx+2):
      n[idx+2]=(idx + (idx+1))


#Approach2
for i in range(len(n)):
    if n[i]+n[i+1]!=n[i+2]:
        n[i + 2]==n[i]+n[i+1]
print(n) 

即使做 len(n)-1 也不能解决问题。一些方向会有所帮助。谢谢你。

标签: listreplace

解决方案


您可以使用 mod ( %) 运算符检查每第三项:

items = [3, 1, 5, 9, 6, 14]

for i, item in enumerate(items):
    if ((i+1) % 3 == 0):
        items[i] = items[i-1] + items[i-2]

print(items)

或者为了更有效,range请按照评论中的说明使用:

for i in range(2, len(items), 3):
    items[i] = items[i-1] + items[i-2]

print(items)

推荐阅读