如何在 Python 中从列表中随机选择元素
本教程向你展示了如何在 Python 中从列表中随机选择一个元素。有多种简单的方法来实现这个目标,所有这些方法都涉及到 Python 模块的导入。
本教程将涵盖需要 random
、secrets
和 NumPy
模块的解决方案。
请注意,所有这些将被介绍的解决方案都将使用伪随机数生成器(PRNG)。
在 Python 中使用模块 random
从列表中选择一个随机元素
最常用的随机化模块是 random
模块。这个模块实现了伪随机效用函数来支持涉及随机化的操作。
比方说,我们想从一个列表中随机挑选一个名字,就像投票一样。
["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
为了从这个列表中挑选出一个随机的名字,我们将使用 random.choice()
,它将从给出的可用数据中选择一个元素。
import random
names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
def selectRandom(names):
return random.choice(names)
print("The name selected is: ", selectRandom(names))
当然,输出将是可变的、随机的。所以它可以是存储在变量 names
中的六个名字中的任何一个。
在 Python 中使用模块 secrets
从列表中选择一个随机的元素
secrets
模块基本上与 random
用于相同的目的。然而,secrets
提供了一种实现 PRNG 的加密安全方法。
在现实生活中的应用,如存储密码、认证、加密和解密以及令牌。secrets
比使用 random
要安全得多,因为它只适用于模拟或不处理敏感数据的操作。
在这个问题中,这两个模块提供的值是一样的,因为我们没有处理任何敏感数据,是为了模拟。
在这个例子中,我们将使用相同的 names
列表。secrets
也有一个版本的函数 choice()
,它产生的变量输出与 random.choice()
相同。
import secrets
names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
def selectRandom(names):
return secrets.choice(names)
print("The name selected is: ", selectRandom(names))
在 Python 中使用模块 NumPy
从列表中选择一个随机元素
NumPy
模块也有用于随机化的实用函数,并且有一些扩展性的工具作为其 choice()
函数的参数。
同样,我们将使用相同的列表 names
来演示函数 numpy.random.choice()
。
import numpy
names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]
def selectRandom(names):
return numpy.random.choice(names)
print("The name selected is: ", selectRandom(names))
该函数将返回与其他两个模块产生的变量输出相同。
NumPy
还为 choice()
提供了其他参数,以列表的形式生成多个输出。
第二个参数接受一个整数值来决定返回多少个随机项。假设我们想从列表 names
中返回 4 个随机元素。
def selectRandom(names):
return numpy.random.choice(names, 4)
print("The names selected are: ", selectRandom(names))
样本输出:
The names selected are: ['John', 'Jill', 'Jill', 'Jill']
在随机结果中,同一个元素有可能重复不止一次。
如果你希望结果项是唯一的,我们可以传递第三个 boolean
参数,实现随机抽样而不替换。
def selectRandom(names):
return numpy.random.choice(names, 4, False)
输出示例:
The names selected are: ['Jill', 'John', 'Jack', 'Jean']
该函数将始终产生一个唯一的列表,没有任何重复的元素。
如果我们添加第三个参数,一个主要的缺点是函数的运行时间,因为它会执行一个额外的任务来检查重复的元素,并将其替换为结果中还不存在的元素。
总而言之,从 Python 列表中选择随机项可以通过使用这三个模块之一来实现。random
、secrets
或 NumPy
。每一个模块都有它的优点和缺点。
如果你想拥有一个加密安全的 PRNG 方法,那么 secrets
是最好的模块。如果你的目的只是为了模拟或非敏感的数据操作,那么使用 random
或 NumPy
。如果你想要的结果不止一个随机结果,那么就使用 NumPy
。
相关文章
在 Python 中将 NumPy 数组转换为列表
发布时间:2023/12/24 浏览次数:102 分类:Python
-
本教程演示了如何将 numpy 数组转换为 Python 中的列表。列表和数组是 Python 中两个最基本且最常用的集合对象。
Python 中追加二维数组
发布时间:2023/12/24 浏览次数:158 分类:Python
-
本教程讨论如何在 Python 中将值附加到二维数组。在 Python 中,我们可以有 ND 数组。我们可以使用 NumPy 模块在 Python 中处理数组。
在 Python 中将数组写入文本文件
发布时间:2023/12/24 浏览次数:68 分类:Python
-
本教程演示如何在 python 中将数组保存到文本文件中。读取和写入文件是构建许多用户使用的程序的一个重要方面。Python 提供了一系列可用于资源处理的方法。
Python 导出到 Excel
发布时间:2023/12/24 浏览次数:129 分类:Python
-
有四种主要方法可用于在 Python 中将数据写入 Excel 文件,DataFrame.to_excel() 方法、xlwt 库、openpyxl 库和 XlsWriter 库。
使用 Selenium Python 在浏览器中打开和关闭标签页
发布时间:2023/12/24 浏览次数:92 分类:Python
-
本教程演示了如何在 Python 中使用 Selenium 在浏览器中自动打开一个新标签页。Selenium 是强大的 Web 自动化和测试工具。我们使用 Selenium 编写脚本,它可以控制 Web 浏览器并执行特定操作。
Conda 安装 Cv2
发布时间:2023/12/24 浏览次数:106 分类:Python
-
本教程演示了如何在 Python 中为 anaconda 用户安装 cv2 模块。互联网上有许多可用的 Python IDE。一种这样的 Python IDE 是 Anaconda,这是一种开源软件
使用 OpenCV solvepnp() 函数解决 PnP 问题
发布时间:2023/12/24 浏览次数:85 分类:Python
-
本教程讨论在 Python 中使用 OpenCV 中的 solvepnp 函数。OpenCV 库是一个开源库,旨在帮助完成计算机视觉任务。
Python 中 NumPy 数组的滑动平均值
发布时间:2023/12/24 浏览次数:145 分类:Python
-
本教程演示了如何在 python 中计算 numpy 数组的滑动平均值。滑动平均值通常用于通过计算特定时间间隔的数据平均值来研究时间序列数据。
在 Python 中计算马氏距离
发布时间:2023/12/24 浏览次数:125 分类:Python
-
有两个主要方法可用于在 Python 中查找两个 NumPy 数组之间的马氏距离,scipy 库中的 cdist() 函数和 numpy 包中的 numpy.einsum() 函数。