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()
。
我对 .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()
。