2017-11-10 6 views
-4

yの範囲(len(リスト))の場合: print( "length"、len(List)) print( "y"、y) print (リスト[y]) if(List [y])%(division_prime)== 0: print(List [y]) counter = counter + 1 List [y] = 0 List.remove )リストからインデックスを削除している間にリストのインデックスを削除している間にインデックスが範囲外にある場合

+2

のためにそのリンクは何ですか?filterfalse呼ばれ、これを行うためのツールを提供しますかコードをお持ちの場合は、ここにテキストとして投稿してください。 –

+0

私はそれを入力したときにコードが投稿されていませんでした –

答えて

0

リストの反復処理中にリストを変更しています。そのため、反復処理中にリストのサイズが変更され、インデックスが範囲外になります。

あなたができることは、削除したくない要素から別のリストを作成することです。

new_list = [x for x in mylist if not remove(x)] 

同じリストを保持し、新しいコピーを作成しない場合は、スライス演算子を使用できます。

mylist[:] = [x for x in mylist if not remove(x)] 

itertoolsライブラリも https://docs.python.org/3/library/itertools.html#itertools.filterfalse

関連する問題