Lea*_*ava 4 python random list python-2.7
我正在尝试创建一个myList除了的示例i_.
我的尝试:
i_ = 'd'
myList = ['a','b','c','d','e']
myList = random.sample(myList, 3)
Run Code Online (Sandbox Code Playgroud)
虽然上面的示例工作正常,但仍有机会i_被删除myList.
我想创建一个没有i_被删除值的样本.
期望的输出:
包含3个项目的任何列表输出,包括i_:
['a','d','e']
Run Code Online (Sandbox Code Playgroud)
只需从列表中抽取2个值,而不使用i_和后插入i_:
new_list = random.sample([i for i in myList if i != i_], 2)
new_list.insert(random.randrange(0, 3), i_)
Run Code Online (Sandbox Code Playgroud)
但是这假设i_在你的列表中只出现一次 - 考虑到你的例子似乎是合理的,但我想提到这一点是为了完整性.如果i_列表中有多个,我也不确定应该得到什么结果.
您还可以使用生成样本的命中和未命中方法,直到您获得包含i_以下内容的样本:
new_list = []
while i_ not in new_list:
new_list = random.sample(myList, 3)
Run Code Online (Sandbox Code Playgroud)
请注意,如果不太可能i_在样本中绘制,这可能会非常慢.对于5个元素的3个样本,它非常快,但如果从1000个元素中绘制3个样本,它可能会非常慢.