A.py
PYTHON
1set_list = [ 2 set(["hello", "yes", "wow", "bye", "you", "I"]), 3 set(["please", "no", "yeah", "good", "he", "she"]), 4 set(["sad", "happy", "angry", "crying", "go", "home"]) 5] 6 7for s in set_list: 8 print(s) 9 print(next(iter(s)))
python A.py
を三回実行した時の出力
output
1{'yes', 'I', 'hello', 'wow', 'you', 'bye'} 2yes 3{'no', 'he', 'good', 'yeah', 'she', 'please'} 4no 5{'happy', 'home', 'angry', 'go', 'sad', 'crying'} 6happy 7 8 9{'hello', 'yes', 'wow', 'bye', 'you', 'I'} 10hello 11{'he', 'good', 'she', 'no', 'please', 'yeah'} 12he 13{'happy', 'angry', 'go', 'home', 'crying', 'sad'} 14happy 15 16 17{'yes', 'wow', 'bye', 'I', 'hello', 'you'} 18yes 19{'no', 'please', 'he', 'she', 'yeah', 'good'} 20no 21{'go', 'crying', 'happy', 'angry', 'home', 'sad'} 22go
実行する度に表示される要素の順番が変わる理由について知りたいです。
調べたこと・やってみたこと
https://stackoverflow.com/questions/12165200/order-of-unordered-python-sets
にあるように、pythonのsetの表示される順番は、メモリに保存されている順番であり、メモリへの保存は各要素をハッシュ化した後の下位bitを用いて行われているようです。
そのため、setを作る時に与えるlistの順番が変われば、setで表示される順番も変わりうるようです。
一方で、setを作る時に与えるlistの順番が同じなら、保存順も同じになるはずなのですが、上の例ではそうなっていません。
追加情報として、同じスクリプト内であったり、同じnotebook内で複数回実行した際には同じ結果が得られます。この辺りもヒントになると思うのですが、自分では解決できなかったのでご教授願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 05:48