ホームページ  >  記事  >  バックエンド開発  >  Python の Set では要素が一見順序どおりに表示されるのはなぜですか?

Python の Set では要素が一見順序どおりに表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 20:44:16321ブラウズ

Why Does Python's Set Display Elements in a Seemingly Ordered Manner?

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 サイトの他の関連記事を参照してください。

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