並列リストの順列によるリストの並べ替え
2 つの並列リストがある場合、一方を並べ替えながら他方を同期して並べ替えることができます。これは、最初のリストを並べ替え、並べ替えられた要素のインデックスを使用して 2 番目のリストを並べ替えることによって実現されます。
一般的なアプローチの 1 つは、2 つのリストを圧縮して並べ替える「装飾、並べ替え、装飾解除」というイディオムです。最初のリストに基づいて結果を解凍します。 Python の zip 関数を使用すると、これは次のように簡潔に実装できます:
list1, list2 = zip(*sorted(zip(list1, list2)))
ただし、リストが大きい場合は、より効率的なインプレース バージョンが存在します:
tups = zip(list1, list2) tups.sort() list1, list2 = zip(*tups)
リストに含まれないもの-比較可能な要素、ラムダ関数を使用したソートインデックスを使用できます。あるいは、キー関数をソートに提供して、2 番目のリストの要素の比較を回避することもできます。
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
空の入力は個別に処理する必要があり、インプレース バージョンの方がわずかに高速である可能性があることに注意してください。特に小さなリストの場合。
以上が同期を維持しながら Python で 2 つの並列リストを効率的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。