我正在尝试创建 myList
的示例,i_
除外。
我的尝试:
i_ = 'd'
myList = ['a','b','c','d','e']
myList = random.sample(myList, 3)
虽然上面的示例工作正常,但仍有可能从 myList
中删除 i_
。
我想创建一个不删除 i_
值的样本。
期望的输出:
任何包含 3 个项目的列表输出,包括 i_
,例如:
['a','d','e']
最佳答案
只需从列表中抽取 2 个不带 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)
请注意,如果样本中不太可能绘制 i_
,这可能会非常慢。对于 5 个元素的 3 个样本,它非常快,但如果您从 1000 个元素中提取 3 个样本,它可能非常慢。
关于Python 随机样本异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921831/