[英]Algorithim to access two random elements from a list, store them in a variable and delete the elements from the original list in Python 3.x?
我有一個列表,到目前為止有 4 個元素。 我可以使用 random.sample 命令隨機選擇 2 個元素
teamslist = "apple" , "banana" , "orange", "clementines"
teamrandom = random.sample(teamslist, k = 2)
無論如何,存儲在teamrandom中的隨機選擇的元素是否要從列表“teamlist”中刪除,以便列表中只剩下剩余的2個字符串?
這樣,當命令再次運行時,它只從列表中選擇剩余的 2 個元素?
不得多次選擇任何元素
您可以簡單地使用random.shuffle
來打亂列表(更改其元素的順序),然后在每次需要隨機元素時從中彈出一個元素:
import random
teamslist = ["apple" , "banana" , "orange", "clementines"]
random.shuffle(teamslist)
當你想要一個隨機元素時
element = teamslist.pop()
注意: list.pop()
返回從列表中刪除后的最后一個元素
如評論中所述,這將丟失原始列表中的順序。 所以一個簡單的解決方法是:
import random
teamslist = ["apple" , "banana" , "orange", "clementines"]
shuffled = teamslist.copy()
random.shuffle(shuffled)
然后獲取一個新元素,只需使用相同的語法:
element = shuffled.pop()
pop()
列表中的隨機索引並存儲在新列表中:
import random
teamslist = ["apple" , "banana" , "orange", "clementines"]
teamsrandom = [teamslist.pop(random.randint(0, len(teamslist) - 1)) for _ in range(2)]
print(teamsrandom)
print(teamslist)
Output:
['clementines', 'orange']
['apple', 'banana']
您可以使用randint
和pop
:
from random import randint
teamslist = ["apple" , "banana" , "orange", "clementines"]
teamrandom = [teamslist.pop(randint(0,len(teamslist)-1)),
teamslist.pop(randint(0,len(teamslist)-1))]
print(teamslist)
print(teamrandom)
Output:
['banana', 'clementines']
['apple', 'orange']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.