【问题标题】:Why set pop return first element while list pop return last element in python为什么在python中设置pop返回第一个元素而list pop返回最后一个元素
【发布时间】:2018-11-30 12:22:12
【问题描述】:

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

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

>>> [1,2].pop()
2

移除并返回任意集合元素。如果设置了则引发 KeyError 是空的。

>>> {1,2}.pop()
1

【问题讨论】:

    标签: python stack


    【解决方案1】:

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

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

    1。由于集合存储为哈希表,出于性能原因和简单性原因,set.pop 将删除哈希表中的第一个元素,这通常与迭代的第一个元素相同按套装,但这不能保证。而且,事实上,CPython 3.6 - 3.7 与 3.3 - 3.5 中的确切时间不同。

    【讨论】:

    • @MohanBabu 实际上,忘记我链接的示例(这取决于您的 Python 实现/版本和随机机会);那太傻了。只需考虑{2, 'a'}。该集合没有最小值,但pop 工作正常。
    • 同意@abarnert
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2016-06-27
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多