ホームページ >バックエンド開発 >Python チュートリアル >Python でリストを反復処理中にリストから項目を削除すると、奇妙な結果が発生する
次のコードがあります:
リーリーただし、得られる結果は次のとおりです:
[2、4、6、8、10、12、14、16、18、20、21、22、23、24、25、26、27、28、29、30、31、32、33、 34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49]
もちろん、結果に 20 未満の数字が表示されないことを願っています。削除するときに何か間違ったことをしたようです。
リストを反復処理しながらリストを変更しています。これは、最初のループでは i == 1
であるため、1
がリストから削除されることを意味します。次に、for
ループはリストの 2 番目の項目 (2
ではなく 3
) に進みます。その後、リストから削除され、for
ループはリスト内の 3 番目の項目 (現在は 5) に進みます。などなど。 ^ を使用して i
の値を指すと、これを視覚化するのが簡単になるかもしれません:
これはリストの初期状態です。その後、1
が削除され、ループはリストの 2 番目の項目に進みます:
リストを反復中にリストの長さを変更する良い方法はありません。あなたができる最善のことはこれです:
リーリー
または、インプレース変更の場合は次のようになります (括弧内は、スライスが割り当てられる前に暗黙的にタプルに変換されるジェネレータ式です):リーリー
n を削除する前に操作を実行したい場合は、次の方法を試すことができます:
リーリー
以上がPython でリストを反復処理中にリストから項目を削除すると、奇妙な結果が発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。