並列リストのソート中に元の位置を維持する
並列リストがあり、一方のリストを再配置しながら一方のリストをソートしたいシナリオ同期された方法で、堅牢なソリューションが存在します。 「装飾、並べ替え、装飾解除」アプローチを利用すると、特に Python の組み込み zip 関数を使用するプロセスが簡素化されます。
Python のソリューションでは、装飾された zip オブジェクトを作成し、続いてそれを並べ替え、最後に元のリストを抽出します。分類された zip から。この手法では、両方のリスト内の要素の元の位置が保持されます。
たとえば、次のリストがあるとします。
list1 = [3, 2, 4, 1, 1] list2 = ['three', 'two', 'four', 'one', 'one2']
次のコードを実行すると、
list1, list2 = zip(*sorted(zip(list1, list2)))
が生成されます。 :
list1 = [1, 1, 2, 3, 4] list2 = ['one', 'one2', 'two', 'three', 'four']
ただし、リストが空の場合、この特定のメソッドは正しく機能しません。これを少し変更することで、この問題に対処できます:
list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
Python は、代替のインプレース並べ替えアプローチを提供します。これは、より冗長ではありますが、小さなリストのパフォーマンスをわずかに向上させる可能性があります:
tups = zip(list1, list2) tups.sort() list1, list2 = zip(*tups)
要約すると、この問題を解決するにはいくつかのアプローチが存在しますが、zip メソッドは、並べ替えプロセス全体を通じて要素の元の位置を維持する簡潔で効率的なソリューションを提供します。
以上がPython で並列リストの元の順序を維持しながら 1 つのリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。