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