Python の Set 要素の順序の謎を解く
Python の Set は順序付けされていないコレクションですが、表示される順序には特定のパターンが現れます。一見一貫性があるように見えますが、この順序は Python のハッシュ メカニズムによるものです。
ハッシュとメモリ配置
Python は各要素をハッシュし、ハッシュの最後の N ビットを配列として使用します。メモリ配置のインデックス。したがって、メモリ内の要素の順序によって、表示される順序が決まります。
衝突解決
2 つの要素が同じハッシュを持つ場合、衝突解決メカニズムはそれらを別のメモリの場所に配置します。要素の挿入順序 (同じハッシュを持つ要素が 1 つだけある場合、または複数の要素がある場合) は、メモリ内の要素の正確な位置に影響します。
例
In次の例では、衝突解決のため、印刷セット内の要素の順序は一貫しています。
set_1 = set([5, 2, 7, 2, 1, 88]) set_1 # set([88, 1, 2, 5, 7]) set_2 = set([8, 16, 24]) set_2 # set([8, 16, 24])
入力リスト内の挿入順序を変更することに注意してください。キーの衝突がある場合、表示される順序が変更される可能性があります。例:
set_3 = set([24, 16, 8]) set_3 # set([24, 16, 8])
一意のハッシュと順序の保持
要素に一意のハッシュ値がある場合、挿入順序は保持されます:
set_4 = set([1, 2, 3]) set_4 # set([1, 2, 3])
注:
説明されている実装は CPython の dict と set に適用され、特定のバージョンでは異なる場合があります。ただし、ハッシュ化とメモリ配置の一般原則は変わりません。
以上がPython の Set では要素が一見順序どおりに表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。