在Python中创建随机数列表并从列表中随机选择元素

云课堂学Python 2024-04-08 00:02:42

在本教程中,我们将介绍一些使用 Python 生成随机数列表,从列表中随机选择元素的技巧。这在许多情况下都很有用,比如数据采样。

使用 random 模块生成随机整数列表

可以简单地通过使用 random 模块的 randint() 与循环来生成随机整数列表。

import randomrandom_integers = []for i in range(6): random_integers.append(random.randint(1, 100))print(random_integers)# 输出:[17, 54, 82, 82, 38, 33]

以上代码利用列表的append()方法,将随机生成的6个1到100之间的整数添加到空列表。

使用列表推导式创建随机整数列表

通过使用列表推导式生成随机整数列表,可以得到一个比上面更简洁的代码。

import randomrandom_integers = [random.randint(1, 100) for i in range(6)]print(random_integers)使用列表推导式创建随机浮点数列表

还可以使用列表推导式和 random() 来生成浮点数列表。

import randomrandom_floats = [random.random() for i in range(6)]print(random_floats)# 输出:[0.7740305693567944, 0.7964292222187997, 0.7668477188707622, 0.62141530387617, 0.24281210337003534, 0.7736315006293789]使用 NumPy 生成随机数列表

还可以使用 NumPy 库的 randint() 生成随机数列表。与 random 模块中的函数同名,但它更灵活。

import numpy as npprint(np.random.randint(1, 10, 10))# 输出:[4 8 1 2 1 1 8 6 2 8]

NumPy 中的 randint() 包含三个参数,第一个参数:随机整数起始值。第二个参数:随机整数的结束值。第三个参数:生成随机数的数量。第三个参数还可以传递元组,比如以下代码,生成5*5的多维数组。

import numpy as npprint(np.random.randint(1, 10, (5,5)))# 输出:[[5 6 4 3 1] [3 2 7 2 9] [8 2 7 5 9] [6 4 6 5 3] [8 9 6 8 8]]从列表中随机选择元素

Python 的 random 模块提供了如下多个允许从列表中随机检索元素的函数。让我们比较一下他们的区别:

random.choice()random.choices()random.sample()使用 random.choice() 函数是从列表中选择随机元素的最简单方法。示例中展示了从列表中选择单个随机元素。>>> import random>>> random.choice([6, 9, 3, 7, 8])8>>> random.choice([6, 9, 3, 7, 8])3>>> random.choice([6, 9, 3, 7, 8])8可以使用 random.choices() 函数从列表中随机选择多个元素。默认以列表形式返回 1 个元素。传递参数 k,可以返回多个随机元素。>>> import random>>> random.choices([6, 9, 3, 7, 8])[9]>>> random.choices([6, 9, 3, 7, 8])[7]>>> random.choices([6, 9, 3, 7, 8])[7]>>> random.choices([6, 9, 3, 7, 8], k = 2)[9, 7]>>> random.choices([6, 9, 3, 7, 8], k = 2)[7, 7]>>> random.choices([6, 9, 3, 7, 8], k = 2)[9, 9]从列表中随机选择多个元素,还可以使用 random.sample() 函数。此函数必须指定参数 k,否则返回错误。>>> import random>>> random.sample([6, 9, 3, 7, 8], k = 2)[8, 6]>>> random.sample([6, 9, 3, 7, 8], k = 2)[8, 3]>>> random.sample([6, 9, 3, 7, 8], k = 2)[8, 7]

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

0 阅读:1