ホームページ > バックエンド開発 > Python チュートリアル > 別のリストで並列順序を維持しながら、あるリストを並べ替えるにはどうすればよいですか?

別のリストで並列順序を維持しながら、あるリストを並べ替えるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-07 15:03:15
オリジナル
134 人が閲覧しました

How Can I Sort One List While Maintaining Parallel Order in Another?

自動順列による並列リストのソート

問題ステートメント

任意の 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 サイトの他の関連記事を参照してください。

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