python 遍历问题

问题需求:从第1个数开始,往后数5个,当第6个数大于10时,继续往后数5个,否则找到下一个大于10的数,开始往后数五个。
案例:a=[12,11,10,9,8,11,10,9,8,7,6,12,11,10,13,14,15]
需求输出:count=[0,5,11]

16不在结果里面吗?为啥我的结果还包含了16...代码如下:供参考,输出为:[0, 5, 11, 16]

a=[12,11,10,9,8,11,10,9,8,7,6,12,11,10,13,14,15]
res = [0]
j = 5
while j < len(a):
    if a[j] > 10:
        res.append(j)
        j = j + 5
    else:
        j = j + 1

print(res)

可以使用一个 while 循环,对列表进行遍历,并使用一个变量 index 来记录当前处理的位置。当列表中第 index+5 个元素大于 10 时,将 index 加上 5;否则,找到下一个大于 10 的元素的位置,并将 index 设为该位置。如果没有找到下一个大于 10 的元素,则退出循环。

代码实现如下:

a = [12, 11, 10, 9, 8, 11, 10, 9, 8, 7, 6, 12, 11, 10, 13, 14, 15]
count = [0]
index = 0
while index < len(a):
    if index + 5 < len(a) and a[index + 5] > 10:
        index += 5
    else:
        found = False
        for i in range(index + 1, len(a)):
            if a[i] > 10:
                index = i
                found = True
                break
        if not found:
            break
    count.append(index)
print(count)


输出为 [0, 5, 11],与需求相符。

望采纳。

a=[12,11,10,9,8,11,10,9,8,7,6,12,11,10,13,14,15]
i=0
b=[]
while i<len(a):
    while a[i]<=10 and i<len(a):
        i+=1    
    b.append(i)
    i+=5
print(b)