我对编码非常陌生,正在玩一些玩具问题要学习但是已经碰到了这个问题. (是的,我知道我没有做出好的变量名称).
我试图找到与列表中下一个数字匹配的所有数字的总和.我让它按顺序查看这些项目但是当它碰到一个副本时它似乎被绊倒了.我运行以下代码来检查我的进度:
code_string = "9511484596541141557316984781494999" list(code_string) for n in code_string: nextn = code_string[code_string.index(n)+1] if n == nextn: print(n)
而我得到的只是:
1 1 1 1 1 1 1
解决方法
index返回字符串中数字的第一个索引,并对字符串执行O(n)查找.你不想使用它.
使用枚举来产生索引&值(但你必须测试索引是否不是最后一个,这1将使你的程序崩溃)或交错(zip)字符串与缺少第一个元素的切片版本:这提供了一个项目及其后继.
然后你可以比较:
code_string = "9511484596541141557316984781494999" for d1,d2 in zip(code_string,code_string[1:]): if d1==d2: print(d1)
输出:
1 1 5 9 9
找到这些数字的总和可以用经典的方式实现,或者使用sum和生成器理解在一行中实现(在求和之前将数字转换为整数):
result = sum(int(d1) for d1,code_string[1:]) if d1==d2)
(这是25)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。