2016-10-23 1 views
1
s = {1,1,2,2,3,2,1,2,4,3,5,8} 
s.add(7) 
print(s) 


#the output is 
{1, 2, 3, 4, 5, 7, 8}. 



However , for 
s = {1,1,2,2,3,2,1,2,4,3,5,100} 
s.add(7) 
print(s) 

#the output is 
{1, 2, 3, 4, 100, 5, 7}. 

私の質問:最初のケースでは、セットが昇順で並べられるようにセットに追加されるのはなぜですか.2番目のケースでは、セットの最後に追加されますセット?この奇妙なセットの挙動を説明できるものは何ですか?

+0

_セットの末尾に_がセットされていないので、セットの最後のコンセプトは存在しません。 – spectras

答えて

0

セットは順不同です。最初のセットのコピーを作成し、数字の順序が維持されているかどうか確認してください。セットをもう少し人口を増やしてみて、同じセッションでそれらの束を作りましょう。本当に大きなものを作ってみてください... Hack @it :)

+0

これは、セットに追加される要素がセット内にランダムに配置されることを意味しますか? –

+0

@SushRいいえ、私は、Set値の配置をいくらか決める特定の事項があるので、ランダムが最も正確な記述ではないと思います。私は、勝利は、セットは非冗長性とハッシュのために効率的であると考えています。非順序のアスペクトは使用速度とメモリの問題に関連しています。ビデオとその回答[here](http://stackoverflow.com/questions/12165200/order-of-unordered-python-sets)を参照してください。希望が助けてくれる! –

+0

@SushR特に、[video @ 27m57s](https://youtu.be/C4Kc8xzcA68?t=27m57s)によれば、「セットは値の記憶がない辞書です」 –