首页 > 解决方案 > 将每个字母与下一个字母进行比较

问题描述

我正在尝试将列表中的每个字母与下一个字母进行比较,如果减法小于 1,我希望打印要比较的数字。

lis=[2,3,5,6,7,8,0,4,2,5,6,8,9,4,2,]
for number in lis:
    if lis[number+1]-lis[number]==1:
        print (number)

输出是

2
3
0
4
2
9
4
2

代码完全跳过 5,6,7 但打印出的数字并不真正适合该语句。谁能解释一下?提前致谢

标签: python

解决方案


您将list 的索引values混淆了。

例如,列表的第一个元素的索引为 0,但值为 2。下一个元素的索引为 1,但值为 3。下一个的索引为 2,但值为 5。当您使用lis[index]时,结果是一个值。

当您使用for number in lis时,它会迭代值,而不是索引。

这是做我认为你要做的事情的一种方法:

lis=[2,3,5,6,7,8,0,4,2,5,6,8,9,4,2,]
for index, value in enumerate(lis[:-1]): #don't go all the way to the end because you're comparing with the next
    if lis[index+1]-value <= 1: #you wanted less than, right?
        print (value)

推荐阅读