ホームページ >バックエンド開発 >Python チュートリアル >対応関係を維持するために、あるリストの並べ替えと別のリストの並べ替えを同時に行うにはどうすればよいですか?

対応関係を維持するために、あるリストの並べ替えと別のリストの並べ替えを同時に行うにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 20:51:12215ブラウズ

How Can I Simultaneously Sort One List and Permute Another to Maintain Correspondence?

並列リストの並べ替えと並べ替えを同時に行う

問題:

list1 と list2 と呼ばれる 2 つの項目リストがあるとします。目標は、list1 の要素を並べ替えると同時に、一致するように list2 の要素を並べ替えることです。 list1 のソート順。言い換えれば、両方のリストの要素間の対応関係を維持したいということです。

解決策:

この問題に対して広く採用されている手法は、「デコレート、ソート」です。 、装飾を解除する」イディオム:

list1, list2 = zip(*sorted(zip(list1, list2)))

このコードは次のことを示します。手順:

  1. zip(list1, list2) は、両方のリストから対応する要素のペアを作成し、各要素をもう一方のリストのコンパニオンで効果的に「装飾」します。
  2. sorted(zip( list1, list2)) は、最初の要素 (list1 から) に基づいてペアを並べ替えます。
  3. zip(*...) は並べ替えられた要素の「装飾を解除」します

追加の考慮事項:

  • 提供されたソリューションは、比較することによって list1 内の等しい要素を解釈します。 list2 内の対応する要素。この比較が望ましくない場合、または計算コストがかかる場合は、代替キー関数の使用を検討してください。
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
  • 空の入力リストの処理は必須です。入力リストが空の可能性がある場合は、エラーを防ぐための適切なエラー処理または特殊なケースがあることを確認してください。

以上が対応関係を維持するために、あるリストの並べ替えと別のリストの並べ替えを同時に行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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