删除python中set的最后一个元素

时间:2018-07-30 19:21:05

标签: python python-3.x set

如何删除集合的最后一个元素,或创建没有最后一个元素的新集合?集不支持索引。我有一组整数,想要删除最大的整数。

4 个答案:

答案 0 :(得分:2)

您可以使用remove方法删除任何指定的元素:

>>> s = {3, 'a', True}
>>> s
{'a', True, 3}
>>> s.remove(3)
>>> s
{'a', True}

但是,“最后”的任何概念都必须来自集合本身,因为集合不能实现固定顺序的概念。请注意上面分配的值和打印的值之间的差异。


OP确认后更新

要删除集合中数字上最大的元素:

s.remove(max(s))

您评论了

  

如果集合仅包含整数,则元素默认为   升序列出。

这是不正确的。例如:

>>> lll = [3**n for n in range(10)]
>>> sss = set(lll)
>>> sss
{1, 6561, 3, 19683, 9, 2187, 81, 243, 729, 27}

也许您对Python中 small 整数的某些效果感到困惑。运行系统会预先分配最多(通常)256个整数常量,并按数字顺序存储在内存中,并进行特殊的哈希处理。这样的效果之一是它们的哈希值是有序的。超出该范围后,哈希将有所不同,如上所示:

答案 1 :(得分:0)

我不认为您可以这样做,因为没有last element的集合。从文档https://docs.python.org/2/library/sets.html中可以看到,集合是无序的。

答案 2 :(得分:0)

这些集合是无序集合。请参阅https://docs.python.org/3/tutorial/datastructures.html#sets。 尝试使用List来做您想要的事情。然后,variable.pop(0)方法将完成此工作。

答案 3 :(得分:0)

正如这里的每个人所说,集合是无序的,但是如果您要从集合中删除元素,则可以执行以下操作(我们称集合a_set):

a_set = set(list(a_set)[:-1])

我想弄清楚-您没有删除集合的最后一个元素,因为没有这样的东西,但是您正在将其转换为列表,删除了最后一个元素,然后再转换回