表示范围内的y(len(List)): 打印( “长度”,LEN(列表)) 打印(“y”,y) 打印( “列表”,列表[Y]) if(List [y])%(dividing_prime)== 0: 打印(列表[Y]) 计数器=计数+ 1 列表[Y] = 0 List.remove(0)
答案 0 :(得分:0)
您正在迭代它时修改列表。因此,当您进行迭代时,列表的大小会发生变化,导致索引超出范围。
您可以做的是从您不想删除的元素中创建另一个列表。
new_list = [x for x in mylist if not remove(x)]
如果要保留相同的列表而不创建新副本,则可以使用切片运算符。
mylist[:] = [x for x in mylist if not remove(x)]
itertools库还提供了一个名为filterfalse的工具 https://docs.python.org/3/library/itertools.html#itertools.filterfalse