簡體   English   中英

僅當尚未選擇元素時,才從列表中偽隨機選擇一個元素

[英]Pseudo-randomly pick an element from a list only if it was not chosen yet

有沒有辦法“偽”-從以前沒有選擇的列表中隨機選擇一個元素? 我知道choice函數,它從列表中返回一個隨機項目,但不考慮以前選擇的項目。 我可以跟蹤已經選擇了哪些元素,並隨機選擇另一個尚未選擇的項目,但這可能包括嵌套循環等。

例如,我還可以刪除每次迭代時從列表中選擇的元素,但這似乎也不是一個好的解決方案。

我的問題是:是否有一個“有意識”的choice功能,它只選擇以前沒有選擇的項目? 請注意,我不是在問如何實現這樣的功能,但可能的解決方案當然也被廣泛接受。

正如其他人所說,您可以洗牌列表,然后使用list.pop()方法。 下面是一個例子:

>>> import random
>>> mylist = list(range(5))
>>> print(mylist)
[0, 1, 2, 3, 4]
>>> random.shuffle(mylist)
>>> print(mylist)
[4, 2, 0, 1, 3]
>>> while len(mylist) > 0:
...     print(mylist.pop())
...
3
1
0
2
4
>>> print(mylist)
[]

從頂部開始隨機播放列表和彈出元素。 那只會生成每個列表元素一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM