2015-01-14 36 views
1

我有一個關於.pop()方法的問題。在文檔中,它指出:在集合上:Python:.pop()on unordered sets

刪除並返回集合中的任意元素。

那麼「隨意」是什麼意思?例如:如果我想從隨機確定位置的用戶列表構建一個隊列,是否可以將所有用戶輸入到一個集合中,然後使用.pop()構建一個隨機分配的隊列?

因此,代碼會看起來像

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

請問這是隨機分配成員索引的合理方式是什麼?或者.pop()是否依賴於輸入數據的某種方式?

謝謝!

回答

5

「任意」表示實現返回哪個元素最方便。你不能保證隨機性。如果您需要隨機選擇,請使用random.sample()random.shuffle()

1

我認爲最好的辦法是使用random.shuffle

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

如果你想通過一個到達的元素之一,那麼你可以使用li.pop()