在Python3.6 +中从集合中弹出随机元素的最Pythonic方法是什么?

时间:2017-06-17 13:35:17

标签: python

在3.6之前我只会使用set.pop()。现在,集合是有序的,并且pop总是从头开始删除。

您认为最蟒蛇的方式是什么?

我不确定我对set.remove(random.sample(set, 1)[0])的看法。

1 个答案:

答案 0 :(得分:7)

set .pop()方法不接受参数,它会删除任意(但不是随机)的设置值。 https://docs.python.org/3.6/library/stdtypes.html#set.pop

使用一个元素random.sample(s, 1)获取一组样本并使用set.remove()

>>> s = set([1,2,3,4,5])
>>> s.remove(random.sample(s, 1)[0])
>>> print(s)
{1, 3, 4, 5}

random.choice不起作用,因为集合未编入索引。

>>> random.choice(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/random.py", line 256, in choice
    return seq[i]