【发布时间】:2018-11-30 12:22:12
【问题描述】:
这有点令人困惑。它实际上来自堆栈pop/push 术语吗?
L.pop([index]) -> item -- 删除并返回索引处的项目(默认最后一个)。 如果列表为空或索引超出范围,则引发 IndexError。
>>> [1,2].pop()
2
移除并返回任意集合元素。如果设置了则引发 KeyError 是空的。
>>> {1,2}.pop()
1
【问题讨论】:
这有点令人困惑。它实际上来自堆栈pop/push 术语吗?
L.pop([index]) -> item -- 删除并返回索引处的项目(默认最后一个)。 如果列表为空或索引超出范围,则引发 IndexError。
>>> [1,2].pop()
2
移除并返回任意集合元素。如果设置了则引发 KeyError 是空的。
>>> {1,2}.pop()
1
【问题讨论】:
set.pop 确实不返回第一个元素。正如您在引用的帮助中明确指出的那样,它返回一个 任意 元素。
原因很简单:集合本质上是无序的。没有有意义的“第一个”或“最后一个”元素。1
1。由于集合存储为哈希表,出于性能原因和简单性原因,set.pop 将删除哈希表中的第一个元素,这通常与迭代的第一个元素相同按套装,但这不能保证。而且,事实上,CPython 3.6 - 3.7 与 3.3 - 3.5 中的确切时间不同。
【讨论】:
{2, 'a'}。该集合没有最小值,但pop 工作正常。