python - 如何在排除一种可能性的情况下随机选择列表中的项目?

标签 python list

除了列表中的给定项目之外,从列表中随机选择项目的最简单方法是什么?

例子: list = [2, 4, 5, 7, 9, 34, 54,]

我如何随机选择 7 以外的任意数字?

最佳答案

两种主要策略是可能的:

从列表中删除异常,并从中抽样:

import random

def choice_excluding(lst, exception):
    possible_choices = [v for v in lst if v != exception]
    return random.choice(possible_choices)

或者只是从你的完整列表中随机选择一个,只要你得到禁止值(拒绝抽样)就再试一次:

def reject_sample(lst, exception):
    while True:
        choice = random.choice(lst)
        if choice != exception:
            return choice

两者都会得到相同的结果(好吧,只要随机的结果相同...):

lst = [2, 4, 5, 7, 9, 34, 54]
choice_excluding(lst, 7)
# 9
reject_sample(lst, 7)
# 54

根据列表的大小,一个可能比另一个更快。试试看!

关于python - 如何在排除一种可能性的情况下随机选择列表中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66933529/

相关文章:

python - lxml.etree.iterparse 关闭输入文件处理程序?

python - 值错误 : Item wrong length 907 instead of 2000

python - 使用 python Gtk 在 gui 窗口中显示终端输出

python - XML 到 CSV 转换器

java - 使用 "List"检索BigQuery的queryResult只得到512条记录

python - 对除一个轴以外的所有轴求和

C# LINQ 查询一个List<Dicitonary<string, object>>

python - 按长度对列表列表进行排序时跟踪原始索引

python - 在Python中从txt文件中读取列表

c# - 列表在不应该使用重复数据时填充