Python 随机样本异常

标签 python python-2.7 list random

我正在尝试创建 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/

相关文章:

python - 导入处理/模块从 python2 更改为 python3?

python - Pylab/Matplotlib 将多个饼图合并为一个 PDF

python-2.7 - 在 Python Pandas 中聚合组并输出特定计数的百分比

java - 让 List.remove(Object o) 通过 id 删除且不等于

python - 递归总是更新字典

python - unotools - 尝试使用 python 将 ods 或 excel 文件转换为 csv

Python shutil.make_archive() 在 Windows 上创建点目录

python - 如何使用我自己的帐户向具有电报 API 的人发送消息

python-2.7 - on_change 事件中的 "TypeError: Cannot read property ' 值 ' of null"

python - 如何在 Python 中正确返回类实例列表