我正在尝试将列表中的每个字母与下一个字母进行比较,如果相减少于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/