【发布时间】:2012-08-17 12:03:41
【问题描述】:
这是我在 Python 集合中注意到的奇怪之处。我读到集合中没有顺序,但它确实从 0 到 79 以及后来从 79 到 127 弹出较低的元素。它不再弹出较低的元素。只有在 128 进入 79 之后才会弹出。为什么会这样?
在 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])
【问题讨论】:
-
即使想要了解此类行为背后的实现也不是一个好主意,因为绝对不能保证或期望它们在版本之间保持稳定或 实现之间;如果您在 CPython 上进行测试,您将不会在 IronPython 或 Jython 上获得相同的行为,并且无法保证下一个 CPython 也将具有相同的行为。
标签: python python-2.7