def lastOne(num):
lst = list(range(1, num+1))
while num >= 0:
num = num - 1
if lst[num]%3 == 0:
lst.pop(num)
return lst
if __name__ == "__main__":
lst = lastOne(50)
print(lst)
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50]
你在for循环的时候list一直在减少啊。但是索引还是原来的索引,到最后llist都没有50个元素了,但是索引还是按照原来的list50个元素来的,所以就报错了