Python随机选取列表元素:Random与Secrets库实战指南
本文详细解析Python中从列表随机选取元素的两种主流方案:Random库与Secrets库。通过对比random.choice、random.sample以及secrets模块的对应方法,展示如何获取单个或批量随机元素。重点强调Secrets库在密码学安全性上的优势,适用于对随机性有更高安全要求的场景,如数据增强策略选择或安全令牌生成。
1. 引言
本文将深入探讨在Python列表中随机选取元素的多种实现路径。在实际开发中,这类需求十分常见,例如在机器学习预处理阶段,随机抽取一种或多种数据增强策略以增加训练集的多样性,或者在业务逻辑中随机分发任务。
2. 举个栗子
为了便于演示,我们构建一个包含若干英文水果名称的列表,目标是从中随机抽取并输出其中一个水果名称。
预设的水果名称列表如下所示:
fruit_name_list = [
'apple',
'orange',
'banana',
'pear',
'watermelon'
]3. 使用Random库
random是Python的标准内置库,无需额外安装即可直接导入使用。本节将介绍利用该库从列表中随机选取元素的三种不同实现方式。
3.1 随机下标
函数random.randrange(num_items)用于生成区间[0, num_items-1]内的一个随机整数。通过获取列表的随机索引,我们可以便捷地访问该索引对应的列表元素。
参考代码如下:
import random
num_items = len(fruit_name_list)
random_index = random.randrange(num_items)
winner = fruit_name_list[random_index]
print(winner)运行结果如下:
orange
3.2 随机选择单个元素
函数random.choice接收列表作为输入参数,并直接返回其中的一个随机元素。在前述示例中,我们可以直接将列表fruit_name_list传入该函数。
参考代码如下:
winner = random.choice(fruit_name_list)
print(winner)运行结果如下:
watermelon
3.3 随机选择多个元素
函数random.sample的行为与random.choice类似,但其核心区别在于支持指定随机抽取的元素数量。在下方的代码示例中,我们将抽取两个随机的水果英文名称。需要注意的是,random.sample的返回值是一个包含所选元素的列表。
参考代码如下:
winners = random.sample(fruit_name_list,2)
print(winners)运行结果如下:
['banana', 'watermelon']
4. 使用Secrets库
Secrets库在安全性上优于Random库,因为它基于操作系统提供的加密安全随机源。与random库一样,它也是Python的内置模块,通常无需额外安装依赖。不过,若使用的Python版本低于3.6,则需要通过pip手动安装该模块。
4.1 随机下标
函数secrets.randbelow的功能与random.randrange相似。使用该函数可以获取0到num_items - 1之间的随机索引,进而利用该索引访问水果列表中的对应元素。
参考代码如下:
import secrets
num_items = len(fruit_name_list)
random_index = secrets.randbelow(num_items)
winner = fruit_name_list[random_index]
print(winner)运行结果如下:
watermelon
4.2 随机选择单个元素
函数secrets.choice的功能类似于random.choice,该函数接收列表作为输入参数,并返回其中的一个随机元素。
参考代码如下:
winner = secrets.choice(fruit_name_list)
print(winner)运行结果如下:
apple
4.3 随机选择多个元素
函数secrets.SystemRandom().sample()的功能类似于random.sample(),该函数接受输入列表和期望返回的元素个数作为参数,最终返回一个包含随机选取元素的列表。
参考代码如下:
winners = secrets.SystemRandom().sample(fruit_name_list,2)
print(winners)运行结果如下:
['watermelon', 'orange']
5. 总结
本文分别介绍了使用Random库和Secrets库从列表中随机选取单个或多个元素的不同实现方法,并提供了相应的代码示例供参考。
至此,关于如何在Python中从List随机挑选元素的介绍已完毕。如需了解更多Python列表操作相关内容,请搜索本站往期文章或继续浏览后续教程,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









