gpt4 book ai didi

python - 如何按顺序比较列表中的项目?

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:08 25 4
gpt4 key购买 nike

我对编码还很陌生,正在通过一些玩具问题来学习,但在这个问题上遇到了瓶颈。 (是的,我知道我的变量名不好)。

我试图找到与列表中的下一个数字相匹配的所有数字的总和。我让它按顺序查看项目,但当它遇到重复项时似乎被绊倒了。我运行了以下代码来检查我的进度:

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) 查找。你不想使用它。

要么使用 enumerate 生成索引和值(但你必须测试索引是否不是最后一个,否则这个 +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,d2 in zip(code_string,code_string[1:]) if d1==d2)

(即 25)

关于python - 如何按顺序比较列表中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53424328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com