Python:当我们不需要重复的随机samp时,如何使用random samp

2024-10-03 19:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码

import random

MyList = [[1,2,3,4,5,6,7,8],[a,s,d,f,g,h,h],[q,w,e,r,t,y]]
MyListRandom = []
random_number = 5
i=0
while True:
     random_list = randint(0,len(MyList))
     element_random = random.sample(MyList[random_list], 1)
     if element_random[0] not in MyListRandom:
     i = i+1
     MyListRandom.append(element_random[0])
else:
    continue 
if(i>=random_number):
    break

如果我不想用这个代码来检查它

^{pr2}$

如果我不想要重复的样品,还有比这更好的方法吗?在


Tags: sample代码importtruenumberlenifnot
2条回答

如果我理解你的问题理解正确,你只需要一个随机版本的原始列表,同时消除你原始列表中的任何重复。如果正确,您可以使用setshuffle

MyListRandom = list(set(MyList))
random.shuffle(MyListRandom)

如果您不担心原始列表中的重复项,只需尝试解决sample引入的可能的重复项,则可以这样做:

^{pr2}$

来自documentationrandom.sample(MyList)的答案将从列表中给出唯一的答案。对于从中取样的MyList中的重复项,可以将其设为set。在

你也不需要每个样本都有循环,你只要给它一个k参数,它就会返回k个随机样本。所以整个代码可以写成:

# I have flatten the whole list into one list 
element_random = random.sample(set([item for sublist in MyList for item in sublist]), 5)

相关问题 更多 >