本文目录导读:

在Python中,打乱列表最常用的是random.shuffle()方法,以下是几种常用的打乱列表方式:
原地打乱(推荐)
import random
# 原始列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 原地打乱,直接修改原列表
random.shuffle(my_list)
print(f"打乱后: {my_list}")
生成新的打乱列表(不修改原列表)
import random
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用random.sample()生成新列表
shuffled_list = random.sample(my_list, len(my_list))
print(f"原列表: {my_list}")
print(f"打乱后: {shuffled_list}")
使用numpy(适合科学计算)
import numpy as np
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# numpy方式
shuffled_list = np.random.permutation(my_list).tolist()
print(f"打乱后: {shuffled_list}")
可复现的随机打乱(设置随机种子)
import random
# 设置随机种子,确保每次运行结果相同
random.seed(42)
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(my_list)
print(f"随机种子42的结果: {my_list}")
# 重置种子后再次运行,结果相同
random.seed(42)
my_list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(my_list2)
print(f"再次运行结果: {my_list2}")
实战案例:随机分配座位
import random
students = ["小明", "小红", "小刚", "小李", "小华", "小天"]
seats = [f"座位{i+1}" for i in range(6)]
# 随机分配座位
random.shuffle(students)
print("=== 随机座位分配 ===")
for i, student in enumerate(students):
print(f"{seats[i]}: {student}")
打乱后拆分训练/测试集
import random
data = list(range(1, 101)) # 100个数据
random.shuffle(data)
# 按80%/20%比例拆分
split_point = int(len(data) * 0.8)
train_data = data[:split_point]
test_data = data[split_point:]
print(f"训练集大小: {len(train_data)}")
print(f"测试集大小: {len(test_data)}")
注意事项
random.shuffle()会直接修改原列表,没有返回值- 如果需要保留原列表,请使用
random.sample()或复制后再shuffle - 设置
random.seed()可以让随机结果可复现
你更关注哪种使用场景?我可以提供更具体的案例。