从列表中删除索引时列出索引超出范围

时间:2017-11-10 16:31:45

标签: python

表示范围内的y(len(List)):             打印( “长度”,LEN(列表))             打印(“y”,y)             打印( “列表”,列表[Y])             if(List [y])%(dividing_prime)== 0:                   打印(列表[Y])                   计数器=计数+ 1                   列表[Y] = 0                   List.remove(0)

1 个答案:

答案 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