如何删除集合的最后一个元素,或创建没有最后一个元素的新集合?集不支持索引。我有一组整数,想要删除最大的整数。
答案 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])
我想弄清楚-您没有删除集合的最后一个元素,因为没有这样的东西,但是您正在将其转换为列表,删除了最后一个元素,然后再转换回