Python 中如何随机选取列表中的一个元素?

Python 随机选列表元素用 random.choice(list);随机选多个不重复位置用 random.sample(list, n);打乱顺序用 random.shuffle。本文介绍各种随机选取方法。

最佳实践
Python 中如何随机选取列表中的一个元素?封面

随机选一个:random.choice(my_list)。随机选多个不重复位置:random.sample(my_list, n)。原地打乱列表:random.shuffle(my_list)。

随机选一个

import random

items = ['apple', 'banana', 'cherry', 'date']
selected = random.choice(items)
print(selected)

空列表会抛 IndexError,必要时先判断。

随机选多个(不重复位置)

# 选 2 个不重复位置的元素
chosen = random.sample(items, 2)

sample 不重复选择同一个位置,但输入本来包含重复值时结果仍可能有相同值;数量超过列表长度会报 ValueError。

随机打乱列表

random.shuffle(items)   # 原地打乱,返回 None
print(items)

加权随机选择

# 使用固定顺序,避免前面的 shuffle 改变值与权重的对应
weighted_items = ['apple', 'banana', 'cherry', 'date']
selected = random.choices(weighted_items, weights=[0.7, 0.2, 0.05, 0.05], k=1)[0]

random.choices(带 s)支持权重且可重复,k 指定选几个。

安全场景注意

random 模块不是密码学安全的。生成令牌、密码、密钥用 secrets 模块:

import secrets
selected = secrets.choice(items)

常见问题(FAQ)

Q:想要可复现的随机结果?
A:设种子 random.seed(42),在相同实现、版本和调用顺序下有助于复现;不要假定所有高级采样函数跨版本都产生同样结果。

Q:random.choice 对元组/字符串有效吗?
A:有效,任何序列都可以。random.choice("abc") 随机选一个字符。

Q:numpy 数组怎么随机选?
A:numpy.random.choice(arr),还支持不放回/放回抽样和概率分布。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台