這是我在Python集中注意到的奇怪事情。我讀過沒有訂單的訂單,但是它確實從0到79以及後來從79到127之間流行了較低的元素。它不會再彈出較低的元素。只有在128進來後,79纔會彈出。這是爲什麼?Python - sets .pop()行爲
是否有任何替代方案,我可以在Python中使用有序的數據結構? 爲什麼從0到79而不是從79到127最低?
>>s = set()
>>s.add(72)
>> s.add(74)
>> s.add(76)
>> s.pop()
72
>> s.add(79)
>> s.pop()
74
>> s.add(81)
>> s
set([81, 76, 79])
>> s.pop()
76
>> s.add(83)
>> s
set([81, 83, 79])
>> s.add(85)
>> s
set([81, 83, 85, 79])
>> s.pop()
81
>> s
set([83, 85, 79])
的可能重複(http://stackoverflow.com。[是否有Python的有序集合?]/questions/1653970/does-python-have-an-ordered-set)(或者,可能是http://stackoverflow.com/questions/10432022/in-python-is-set-pop-deterministic) – geoffspear 2012-08-17 12:05:51
這不是一個甚至想知道這樣的行爲背後的實現的好主意,因爲它們絕對不能保證或預期在實現之間的版本*或*之間是穩定的;如果您在CPython上進行測試,您將無法在IronPython或Jython上獲得相同的行爲,並且不能保證下一個將出現的CPython也會具有相同的行爲。 – 2012-08-17 13:18:49
謝謝你的幫助 – thanmai 2012-08-20 05:38:06