Python随机打乱案例如何打乱列表

wen python案例 29

本文目录导读:

Python随机打乱案例如何打乱列表

  1. 原地打乱(推荐)
  2. 生成新的打乱列表(不修改原列表)
  3. 使用numpy(适合科学计算)
  4. 可复现的随机打乱(设置随机种子)
  5. 实战案例:随机分配座位
  6. 打乱后拆分训练/测试集
  7. 注意事项

在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() 可以让随机结果可复现

你更关注哪种使用场景?我可以提供更具体的案例。

抱歉,评论功能暂时关闭!