Python随机样本有异常

时间:2017-10-25 00:02:47

标签: python python-2.7 list random

我尝试创建myList的样本,但i_除外。

我的尝试:

i_ = 'd'

myList = ['a','b','c','d','e']

myList = random.sample(myList, 3)

虽然上述示例工作正常,但仍有可能i_移除myList

我想创建一个不删除i_值的示例。

所需的输出:

任何包含3个项目的列表输出,包括i_,例如:

['a','d','e']

3 个答案:

答案 0 :(得分:5)

只需从列表中抽取2个值而不使用/./ - Any character except a newline. /./m - Any character (the m modifier enables multiline mode) ,然后再插入i_

i_

但是这假设new_list = random.sample([i for i in myList if i != i_], 2) new_list.insert(random.randrange(0, 3), i_) 在您的列表中只出现一次 - 在您的示例中似乎是合理的,但我想提及这一点是为了完整性。如果列表中有多个i_,我也不确定所需的结果是什么。

您还可以使用生成样本的命中和遗漏方法,直到您获得包含i_的样本:

i_

请注意,如果样本中不可能绘制new_list = [] while i_ not in new_list: new_list = random.sample(myList, 3) ,这可能会非常慢。对于5个元素的3个样本,它非常快,但如果你从1000个元素中抽取3个样本,它可能非常慢

答案 1 :(得分:2)

保证i_将在列表中,然后减少一个随机元素。

myList.remove(i_)
myList = random.sample(myList, 2)
myList.append(i_)

如果您愿意,可以将这些组合成一行。

答案 2 :(得分:0)

如果需要“一个班轮”,那么您可以从i_中内联切片myList并获取2个随机样本,添加i_和'shuffle',与{{1}内联来自文档

用换行符写

sample(x, k=len(x))