ホームページ > バックエンド開発 > Python チュートリアル > Python での反復中のリストの変更に問題があるのはなぜですか?

Python での反復中のリストの変更に問題があるのはなぜですか?

DDD
リリース: 2024-10-21 09:05:30
オリジナル
976 人が閲覧しました

Why is Modifying a List During Iteration in Python Problematic?

リストの反復: Python の動作を理解する

Python では、リストを反復し、その内容を同時に変更すると、予期しない動作が発生する可能性があります。次の単純化された例を考えてみましょう:

<code class="python">x = [1,2,2,2,2]

for i in x:
    x.remove(i)

print(x)        </code>
ログイン後にコピー

リストからすべての要素を削除することが目的です。ただし、実行すると 2 つの要素が残ります。なぜこのようなことが起こるのでしょうか?

反復中の変更の落とし穴

Python では、反復中にリストを変更することは推奨されないと規定しています。リストから要素が削除されると、イテレータの位置は次の要素に移動します。この例では、最初の要素が削除され、位置が 2 番目の要素に移動されます。ただし、2 番目の要素はまだ「2」であるため、反復中にスキップされます。このスキップは継続し、2 つの「2」要素が残ります。

問題の解決

これに対処するために、Python では反復処理の前にリストを効果的にコピーする手法が提供されています。

<code class="python">for i in x[:]:
    x.remove(i)</code>
ログイン後にコピー

この場合、[:] スライス演算子は元のリストのコピーを作成します。これにより、反復が期待どおりに進行し、すべての要素が元のリストから削除されることが保証されます。この動作は、要素の追加や置換ではなく、反復中のリストの変更に適用されることに注意してください。

以上がPython での反復中のリストの変更に問題があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート