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

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

Mary-Kate Olsen
リリース: 2024-12-10 06:54:14
オリジナル
723 人が閲覧しました

How Can I Sort One List While Maintaining the Original Order of a Parallel List in Python?

並列リストのソート中に元の位置を維持する

並列リストがあり、一方のリストを再配置しながら一方のリストをソートしたいシナリオ同期された方法で、堅牢なソリューションが存在します。 「装飾、並べ替え、装飾解除」アプローチを利用すると、特に 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 サイトの他の関連記事を参照してください。

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