簡體   English   中英

算法從列表中訪問兩個隨機元素,將它們存儲在變量中並從 Python 3.x 中的原始列表中刪除元素?

[英]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']

您可以使用randintpop

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.

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