Python随机选取列表元素:Random与Secrets库实战指南

向北走
向北走
发布时间:2026-10-15| 2人浏览过
原创

本文详细解析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列表操作相关内容,请搜索本站往期文章或继续浏览后续教程,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。