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

我对编码非常陌生,正在通过一些玩具问题来学习,但遇到了这个问题。(是的,我知道我不会创建好的变量名)。


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


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

为什么它在我的列表中跳来跳去,而不是按顺序移动到下一个?它与将字符串转换为列表有关吗?我想最终用一个更大的列表来做这件事。


慕的地8271018
浏览 152回答 2
2回答

子衿沉夜

index返回字符串中数字的第一个索引并对字符串执行O(n)查找。你不想使用那个。要么用于enumerate产生索引和值(但您必须测试索引是否不是最后一个,否则这个 +1 将使您的程序崩溃)或zip将字符串与缺少第一个元素的切片版本交错():这提供一个项目及其后继者。然后你可以比较:code_string = "9511484596541141557316984781494999"for d1,d2 in zip(code_string,code_string[1:]):   if d1==d2:      print(d1)输出:11599可以通过经典方式找到这些数字的总和,或者在一行中使用sum生成器理解(在求和之前将数字转换为整数):result = sum(int(d1) for d1,d2 in zip(code_string,code_string[1:]) if d1==d2)(这是25)

翻翻过去那场雪

尝试跟踪两个索引,而不是遍历列表中的实际项目:for i in range(0,len(code_string)):    if code_string[i] == code_string[i+1]:        print(code_string[i])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python