如何禁用 random.choice 中的重复项目

How to disable duplicated items in random.choice

我想使用 random.choices() 在列表中抓取一个随机项目,但我不需要抓取多个项目。 示例:

import random
mylist = ['python', 'c++', 'html', 'CSS', 'JavaScript']
print(random.choices(mylist, k=4)

有时 returns 这个输出:

['python', 'html', 'JavaScript', 'JavaScript']

所以我想删除重复的JavaScript,所以它只剩下一个JavaScript并用新的项目替换重复的

['python', 'html', 'CSS', 'JavaScript']

使用这个:

from random import sample
mylist = ['python', 'c++', 'html', 'CSS', 'JavaScript']
print(sample(mylist, k=4))

您可以将该列表转换为集合,这样就不会出现重复的情况。即使你在列表中给出双打,这组也只有单打

import random
mylist = ['python', 'c++', 'html', 'CSS', 'JavaScript']
my_set = set(random.choices(mylist, k=4))
print(my_set)

您稍后可以再次将集合转换为列表。

您应该为此实施使用集合列表。 集合列表允许您存储任何类型的信息,但它不允许您有重复的值。

查看 Set 的工作原理 here

如果你想要确定数量的样本,那么你应该做一个循环 其中列表大小必须达到所需的样本数。

import Random

myset ={}
nSamples = 3
a =['pear','orange','cherry','pineapple','banana']
while(len(myset) != 3){
myset.add(Random.choices(a,k=1))
}