Python:.pop()在无序集上

时间:2015-01-14 20:43:49

标签: python set

我对.pop()方法有疑问。在文档中,它说明了集合:

  

从集合中删除并返回任意元素。

那么“武断”究竟是什么意思呢?比如,例如:如果我想从随机确定位置的用户列表构建队列,我可以将所有用户输入到集合中,然后使用.pop()构建随机分配的队列吗?

所以代码看起来像

queue_set = {'bob','rachel','sara','david'}
queue = dequeue([])
while queue_set:
        queue.append(queue_set.pop())

这是将成员随机分配到索引的合理方法吗?或者.pop()依赖于输入数据的某种方式或什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

没有

“Arbitrary”表示实现返回最方便的元素。你无法保证随机性。如果您需要随机选择,请使用random.sample()random.shuffle()

答案 1 :(得分:1)

我认为最好的方法是使用random.shuffle

>>> import random
>>> li = ["bob", "rachel", "sara", "david"]
>>> random.shuffle(li)
>>> li
['sara', 'bob', 'david', 'rachel']

如果您想逐个获取元素,则可以使用li.pop()