如何利用Python随机从list中挑选一个元素
作者:sgzqc 发布时间:2023-08-04 00:05:54
1. 引言
在本文中,我们将研究从列表中选择随机元素的不同实现方法。在日常项目中,我们经常会遇到这种情形,比如随机从多种数据增强策略中选择一种或几种来提升训练数据的多样性。
2. 举个栗子
为了方便示例,这里我们假设有一个包含多个水果英文名的列表,并且我们需要从中选择一种随机水果进行输出。
水果名称列表如下所示:
fruit_name_list = [
'apple',
'orange',
'banana',
'pear',
'watermelon'
]
3. 使用Random库
random 库是一个 python的内置库,因此我们不需要重新安装它,可以方便地直接导入。这里我们将研究使用该库从列表中选择随机元素的 3 种不同方法。
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 库,我们不必安装任何其他依赖项。但是,如果我们使用的是低于3.6 的Python版本,则必须使用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库来从列表中随机挑选一个或多个元素的不同实现方法,并均给出了代码示例。
来源:https://blog.51cto.com/u_15506603/5027441
猜你喜欢
- /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysqlunzip mysql-5.
- 这篇文章主要介绍了微信小程序转发事件实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考
- 有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情
- 配置要求:IIS(win2000 server 自带)、Java 2 SDK 1.4.2 (或更高版本)、Tomcat Web Server
- 废话就不多说了,直接上内容。<form action="/home/search" method="ge
- 此文档是一位高手同事Hewei的原创实践总结,过程真是精彩,最后修复损坏数据库取得圆满效果,值得收藏的一篇好文章。前几天因为mysql数据库
- 先废话几句,这第23篇教程一直没有翻译出来,直到今天我看到待审评论里面有这么一条超长的评论,结果一看,居然是这篇教程的翻译稿。
- 方法一:<script language="JavaScript"> <!--
- 先来看一个老掉牙的故事:福特说,我在设计汽车之前,到处去问人们“需要一个什么样的更好的交通工具?”,几乎所有人的答案都是 ── 一匹“更快的
- 本文实例讲述了python获取当前计算机cpu数量的方法。分享给大家供大家参考。具体分析如下:这里实际上返回的是计算机的cpu核心数,比如c
- 不同于其他软件项目,互联网项目的开发有其独有的特性。互联网项目开发不同于传统软件项目开发不同于需求定制性的软件开发公司。客户的需求是明确的,
- 说到这个话题,我们有个产品叫群组,为什么人们需要群组?简单说,群组就是个圈子,是有共同爱好和话题的人群聚在一起讨论、分享的地方。这个产品的诞
- 先让我们看一个例子,了解什么是模式化窗口。以下是QQ秀商城在非登录时提示登录的一种状态。当我在非登录状态,通过保存形象的方式买一件衣服时,弹
- 要实现此效果需要 1 个步骤: 第 1 步: 把下面的代码加到<BODY></BODY&g
- mysql数据库里,对一个已创建的表进行DDL操作,比如说添加一个字段。在做测试时,发现ddl操作的时间特别的长。
- 下面这段代码是asp编写的用来识别客户端是否为手机浏览器,以及手机类型的代码。主要用于手机网站的建设,以便实现相同网址下的不同版本网站(比如
- oracle 11g的监听日志和警告日志都是在/u01/oracle/diag/tnslsnr/oracle/listener目录和/u01
- 思路:利用time函数返回的时间字符串与指定时间字符串做比较,相等的时候执行对应的操作。不知道大家的思路是什么,感觉这样比较耗CPU。。。。
- Abs (数值)绝对值。一个数字的绝对值是它的正值。空字符串 (null) 的绝对值,也是空字符串。未初始化的变数,其绝对为 0例子:ABS
- 描述tan() 返回x弧度的正弦值。语法以下是 tan() 方法的语法:import mathmath.tan(x)注意:tan()是不能直