自動順列による並列リストのソート
問題ステートメント
任意の 2 つの並列リストが与えられた場合データ型の場合、一方のリストを並べ替えると同時にもう一方のリストを並べ替える方法を考案する
解決策
この問題に対処する一般的なアプローチの 1 つは、「装飾、並べ替え、装飾解除」というイディオムです。 Python の組み込み zip 関数を使用すると、両方のリストの要素を効率的に結合してタプルにし、最初のリストの値に基づいてこれらのタプルを並べ替えることができます。このソートされたタプルのリストを「装飾解除」して、目的のソートされたリストを取得できます。
実装:
list1, list2 = zip(*sorted(zip(list1, list2))) # Alternatively, for in-place sorting: # tups = zip(list1, list2) # tups.sort() # list1, list2 = zip(*tups)
利点とパフォーマンス
このアプローチでは、特に簡潔さと簡潔さを優先します。 zip 関数を使用します。ただし、小さなリストの場合は、インプレース バージョンの方が若干高速である可能性があります。
tups = zip(list1, list2) tups.sort() zip(*tups)
大きなリストの場合、特定の状況では 1 行バージョンの方がパフォーマンスが向上する可能性があります。
代替アプローチ
コメントで述べたように、インデックスの並べ替えやカスタム キー関数の提供など、他のアプローチも存在します。ソートアルゴリズム。これらの代替方法は、2 番目のリスト内の要素の直接比較に問題がある場合に適している可能性があります。
以上が別のリストで並列順序を維持しながら、あるリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。