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

同期を維持しながら Python で 2 つの並列リストを効率的に並べ替えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-11 14:49:12
オリジナル
460 人が閲覧しました

How Can I Efficiently Sort Two Parallel Lists in Python While Maintaining Synchronization?

並列リストの順列によるリストの並べ替え

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

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