我正在尝试将列表中的每个字母与下一个字母进行比较,如果相减小于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 :(得分:3)
您正在使列表的索引与值混淆。
例如,列表的第一个元素的索引为0但值为2。下一个元素的索引为1但值为3。下一个元素的索引为2但值为5。当您使用str_match(x, "gene_biotype\\s+\"([^\"]+)\"")[,2]
# [1] "protein_coding" "IG_V_gene" "protein_coding"
时,结果为a值。
使用lis[index]
时,它将遍历值,而不是索引。
这是做我想做的事情的一种方法:
for number in lis
答案 1 :(得分:1)
您还可以使用切片和zip
通过一对连续的元素遍历列表:
lis = [2,3,5,6,7,8,0,4,2,5,6,8,9,4,2,]
for n, m in zip(lis, lis[1:]):
if m - n == 1:
print(n)