ホームページ > バックエンド開発 > Python チュートリアル > Python で反復中にリストから要素を安全に削除するにはどうすればよいですか?

Python で反復中にリストから要素を安全に削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-30 05:05:09
オリジナル
870 人が閲覧しました

How to Safely Remove Elements from a List While Iterating in Python?

反復中にリストから要素を削除する

Python でリストを反復する場合、特定の条件を満たす項目を削除する方法を知ることが重要です。基準。ただし、反復中にリストを変更しようとすると、問題が発生する可能性があります。

ジレンマ

次のコード ブロックを考えてみましょう。

for tup in somelist:
    if determine(tup):
         # How do I remove 'tup' here?
ログイン後にコピー

どうすればよいですか?を保持したままリストから tup を削除すると、 iterator?

解決策

この問題にはいくつかの解決策があります。

1.リスト内包表記

somelist = [x for x in somelist if not determine(x)]
ログイン後にコピー

このメソッドは、削除する必要のない要素のみを含む新しいリストを作成します。

2.スライス割り当て

somelist[:] = [x for x in somelist if not determine(x)]
ログイン後にコピー

この割り当ては、必要な要素のみを含むように既存のリストを変更します。

3. Itertools

from itertools import filterfalse
somelist[:] = filterfalse(determine, somelist)
ログイン後にコピー

このアプローチでは、Python の filterfalse 関数を使用して、不要な要素をフィルターで除外します。

補足

  • 決定function は、どの要素を処理するかを決定するカスタム基準関数のプレースホルダーです。
  • スライス割り当てソリューションは、somelist への他の参照に変更を反映する必要がある場合に役立ちます。
  • 特定の値のみを確認する必要がある場合は、if ステートメントを直接使用できます。ループ。

以上がPython で反復中にリストから要素を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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