Python 中如何随机选取列表中的一个元素?
Python 随机选列表元素用 random.choice(list);随机选多个不重复用 random.sample(list, n);打乱顺序用 random.shuffle。本文介绍各种随机选取方法。
随机选一个: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)
加权随机选择
# 按权重选择:苹果 70%,香蕉 20%,其他 10%
selected = random.choices(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),还支持不放回/放回抽样和概率分布。