list - 当不相等时,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 也不能解决问题。一些方向会有所帮助。谢谢你。
解决方案
您可以使用 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)
推荐阅读
- spring-boot - Spring-data-elasticsearch:无法从 Flux 转换
> 到通量 更新到 7.6.2 后。如何处理 SearchHit? - c++ - Linux C 仅对我的程序禁止核心转储
- android - Android:有没有办法将图像从一个 Android 应用程序流式传输到另一个应用程序?
- scale - Konvajs 滚动到图层的中心
- docker - 替换 dockerfile 变量中的字符 - 错误:替换中缺少“:”
- html - 制作具有透明背景和不同图标的按钮
- vim - VIM 在 INSERT 模式下写入时突出显示空格
- php - Zoom API - 检查电子邮件的请求不起作用
- vim - 写入磁盘时缺少字形字符和垃圾替换文件名的前 5 个字符
- java - 在 IntelliJ 中注释多行代码的键盘快捷键