我正在尝试将列表中的每个字母与下一个字母进行比较,如果相减少于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
但是打印出的数字实际上并不适合该语句。
谁能解释一下?
提前致谢

最佳答案

您正在将列表的索引与值混淆。

例如,列表的第一个元素的索引为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)

关于python - 将每个字母与下一个字母进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55694276/

10-12 21:59