Python:无序集上的 .pop()

Python: .pop() on unordered sets

我对 .pop() 方法有疑问。在文档中,它指出在集合上:

Remove and return an arbitrary element from the set.

那么 "arbitrary" 到底是什么意思呢?例如:如果我想从随机确定位置的用户列表构建一个队列,我可以将所有用户输入一个集合,然后使用 .pop() 构建一个随机分配的队列吗?

所以代码看起来像

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

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

谢谢!

没有

"Arbitrary" 表示实现 returns 哪个元素最方便。你不能保证随机性。如果需要随机选择,请使用 random.sample()random.shuffle()

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

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

如果要逐一获取元素,可以使用li.pop()