ホームページ >バックエンド開発 >Python チュートリアル >Python で順序を維持しながらリストから重複を効率的に削除するにはどうすればよいですか?

Python で順序を維持しながらリストから重複を効率的に削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-31 05:50:13727ブラウズ

How Can I Efficiently Remove Duplicates from a List While Preserving Order in Python?

リストから重複を削除しながら順序を保持する

元の順序を維持しながらリストから重複要素を削除することは、次のように困難になる場合があります。重複を排除するためのセットは通常、最初のシーケンスを混乱させます。

この問題に対処するには、Pythonコミュニティは、さまざまな組み込みソリューションや慣用的なソリューションを開発しました。最も効率的なオプションの 1 つは、f7 として知られる関数です。この関数は、セットを利用して重複を効率的に検出して削除します。

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]

この関数は、seen という名前のセットを使用して、重複を迅速に識別して削除します。秘密の最適化は、ローカル変数として seen.add を seen_add に割り当てることにあります。これにより、Python が反復ごとに seen.add を動的に解決できなくなります。これにより、 seen.add が変更される可能性があるため、パフォーマンスの低下につながる可能性があります。

ActiveState の順序付きセット データ構造など、他の代替手段は次のとおりです。同じデータセットに対して重複削除操作を頻繁に実行することが予想される場合にも使用できます。

提供されたコードでは、 seen.add() は一貫して None を返すことに注意してください。セットの更新をトリガーする方法として論理和演算子を使用する必要があります。

以上がPython で順序を維持しながらリストから重複を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。