ホームページ > バックエンド開発 > Python チュートリアル > 順序なしリストを異なる要素と効率的に比較するにはどうすればよいですか?

順序なしリストを異なる要素と効率的に比較するにはどうすればよいですか?

DDD
リリース: 2024-11-28 02:47:10
オリジナル
295 人が閲覧しました

How to Efficiently Compare Unordered Lists with Different Elements?

異なる要素を持つ順序なしリストの比較

要素が複雑なオブジェクトの場合、特に要素が複雑な場合、異なる要素を持つ 2 つの順序なしリストを比較するのは難しい場合があります。この質問は、この問題に取り組みます。

効率的な比較手法

提供されるソリューションでは、さまざまな時間計算量で順序なしリストを比較するための 3 つの方法を概説します。

  1. O( n): オブジェクトがハッシュ可能である場合は、Counter() メソッドの使用が適しています。各要素の出現をカウントし、結果のカウンターを比較します。
def compare(s, t):
    return Counter(s) == Counter(t)
ログイン後にコピー
  1. O(n log n):sorted() メソッドは、次の場合に使用できます。オブジェクトは注文可能です。両方のリストをソートし、結果としてソートされたシーケンスを比較します。
def compare(s, t):
    return sorted(s) == sorted(t)
ログイン後にコピー
  1. O(n * n): このアプローチは、オブジェクトがハッシュ可能でもハッシュ可能でもない場合に適しています。注文可能。 1 つのリストを反復処理し、各要素を他のリストから削除できるかどうかを確認します。
def compare(s, t):
    t = list(t)  # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t
ログイン後にコピー

適切な比較手法の選択は、リスト内のオブジェクトの性質と必要な時間の複雑さに依存します。

以上が順序なしリストを異なる要素と効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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