ホームページ >バックエンド開発 >Python チュートリアル >リストをセットに変換すると順序が変わるのはなぜですか? 順序を保持するにはどうすればよいですか?

リストをセットに変換すると順序が変わるのはなぜですか? 順序を保持するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 22:18:13323ブラウズ

Why Does Converting a List to a Set Change the Order, and How Can I Preserve It?

セット変換における順序の変更

Python でリストをセットに変換すると、要素の順序が変更されるように見えます。リストは要素の順序を維持しますが、セットは順序付けされていないデータ構造であるため、これは不可解になる可能性があります。この不一致の理由は、セットの基本的な性質にあります。

セットは、効率的なメンバーシップ テストを実行するように設計されており、要素の挿入順序は保持しません。これは、セットが内部的にハッシュ テーブルとして表され、検索を高速化するために要素がスクランブルされた方法で保存されるためです。

順序を保持する方法

保持が必要な場合データ収集の順序に従って、使用する代わりにいくつかの方法があります。 set:

  • リスト内包表記: 元の順序を維持しながら集合演算を実行するには、リスト内包表記を使用します。たとえば、セット B に基づいてリスト A から要素を削除するには、次のコードを使用します:
B = set([6, 20, 1])
result = [x for x in A if x not in B]
  • Ordered Dictionary (Python 3.7 ): Python辞書では OrderedDict 機能が提供されるようになり、挿入順序が確実に保持されます。セット操作を実行するには:
import collections
A = collections.OrderedDict.fromkeys([1, 2, 20, 6, 210])
B = collections.OrderedDict.fromkeys([6, 20, 1])
result = collections.OrderedDict.fromkeys(x for x in A if x not in B)
  • 古い Python バージョン: 3.7 より前のバージョンの Python の場合は、代わりに collections.OrderedDict モジュールを使用します。

以上がリストをセットに変換すると順序が変わるのはなぜですか? 順序を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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