セットに変換するときにリストの順序を維持する
Python でリストをセットに変換する場合、要素の順序はセットによって変わる可能性があります順序付けされていないデータ構造であること。元の注文を保持する必要がある場合、この動作は不便な場合があります。
セットは、メンバーシップの素早い検索を提供するように設計されています。要素をハッシュ値として保存することによって。要素がセットに追加される順序は保持されないため、リストをセットに変換すると、検索効率を最適化するために要素が並べ替えられます。
a.リスト内包表記
順序を維持しながらリストから特定の要素を削除する必要がある場合は、リスト内包表記を使用できます。例:
a = [1, 2, 20, 6, 210] b = set([6, 20, 1]) result = [x for x in a if x not in b] # [2, 210]
b. OrderedDict (Python 3.7 )
Python バージョン 3.7 以降では、collections.OrderedDict を使用して順序付きセットを作成できます。集合演算の後でも、要素の順序は維持されます。
from collections import OrderedDict a = OrderedDict.fromkeys([1, 2, 20, 6, 210]) b = OrderedDict.fromkeys([6, 20, 1]) result = OrderedDict.fromkeys(x for x in a if x not in b) # OrderedSet([(2, None), (210, None)])
c. OrderedSet (古い Python バージョン)
古い Python バージョンでは、orderedset パッケージを使用して同様の機能を実現できます。
import orderedset a = orderedset.OrderedSet([1, 2, 20, 6, 210]) b = orderedset.OrderedSet([6, 20, 1]) result = orderedset.OrderedSet(x for x in a if x not in b)
これらの手法を使用すると、集合演算を実行できます。元のリストの順序を維持しながら。
以上がPython でセットに変換した後、リストの順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。