为什么在python中设置pop return first元素而列出pop return last元素

为什么在python中设置pop return first元素而列出pop return last元素,python,stack,Python,Stack,这有点让人困惑。它实际上是来自堆栈pop/push术语吗 L.pop([index])->item——删除并返回索引处的项(默认为最后一个)。 如果列表为空或索引超出范围,则引发索引器错误 删除并返回任意集合元素。如果设置为 是空的 set.pop不返回第一个元素。正如您引用的帮助中明确指出的,它返回一个任意元素 原因很简单:集合本身就是无序的。没有有意义的“第一个”或“最后一个”元素。1 一,。由于集合存储为哈希表,因此出于性能和简单性的原因,set.pop将删除哈希表中的第一个元素,这通常与

这有点让人困惑。它实际上是来自堆栈
pop/push
术语吗

L.pop([index])->item——删除并返回索引处的项(默认为最后一个)。 如果列表为空或索引超出范围,则引发索引器错误

删除并返回任意集合元素。如果设置为 是空的

set.pop
不返回第一个元素。正如您引用的帮助中明确指出的,它返回一个任意元素

原因很简单:集合本身就是无序的。没有有意义的“第一个”或“最后一个”元素。1


一,。由于集合存储为哈希表,因此出于性能和简单性的原因,
set.pop
将删除哈希表中的第一个元素,这通常与集合迭代的第一个元素相同,但不能保证这一点。事实上,CPython 3.6-3.7与3.3-3.5中的情况不同。

@MohanBabu实际上,忘记我链接的示例(这取决于您的Python实现/版本和随机机会);那太傻了。只需考虑<代码> { 2,“a”} /COD>。该集合没有最小值,但
pop
工作正常。agree@abarnert
>>> [1,2].pop()
2
>>> {1,2}.pop()
1