random.shuffle(indices) 写一个demo

random.shuffle(indices)是Python中的一个函数,用于将一个序列随机打乱。该函数会直接修改原始列表,不会返回任何值。

以下是一个简单的示例,演示如何使用random.shuffle()函数打乱一个整数序列:


复制代码

import random

# 生成一个长度为10的整数列表
seq = list(range(10))
print("原始序列:", seq)

# 打乱序列并输出
random.shuffle(seq)
print("打乱后序列:", seq)
 

输出结果可能如下所示:


复制代码

原始序列: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

打乱后序列: [6, 7, 2, 4, 5, 3, 0, 9, 8, 1]

在这个示例中,我们首先通过list(range(10))生成了一个包含数字09的整数列表,然后调用random.shuffle(seq)对其进行随机打乱。最后,我们输出了打乱后的序列,可以看到其中的元素已经被随机排列

### Python 中 `random.shuffle` 函数的用法 `random.shuffle` 是 Python 的标准库模块 `random` 提供的一个方法,用于就地打乱列表中的元素顺序。该函数接受两个参数: 1. **第一个参数**:必选,是一个可变序列(通常是列表),其内容会被随机重新排列。 2. **第二个参数**:可选,默认为 None,允许自定义伪随机数生成器。 以下是 `random.shuffle` 的基本实现方式以及注意事项: #### 基本语法 ```python import random lst = [1, 2, 3, 4, 5] random.shuffle(lst) print(lst) # 输出可能是 [3, 1, 4, 5, 2] 或其他任意顺序 ``` 此操作会修改原始列表的内容[^1]。 --- #### 使用场景与示例 当需要对一组数据进行随机化处理时,可以使用 `random.shuffle` 来完成这一需求。例如,在机器学习领域中,通常会在训练模型之前对数据集进行洗牌以打破可能存在的样本顺序偏差。 下面展示如何结合快速排序算法来对数组先排序再随机打乱: ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) arr = [3, 6, 8, 10, 1, 2, 1] sorted_arr = quick_sort(arr) print("Sorted Array:", sorted_arr) # 排序后的结果 # 随机打乱已排序的数组 random.shuffle(sorted_arr) print("Shuffled Sorted Array:", sorted_arr) # 打乱后的结果 ``` 通过这种方式,可以在保持原生数据结构不变的情况下对其进行随机重排。 --- #### 可能遇到的问题及其解决方案 ##### 问题 1: 不希望改变原列表怎么办? 由于 `random.shuffle` 修改的是传入对象本身,因此如果不希望影响原始数据,可以通过复制一份新列表来进行操作。 解决办法如下所示: ```python original_list = ['a', 'b', 'c'] shuffled_copy = original_list[:] # 创建副本 random.shuffle(shuffled_copy) print("Original List:", original_list) # ['a', 'b', 'c'] (未变化) print("Shuffled Copy:", shuffled_copy) # 如['c', 'a', 'b'] (被打乱) ``` ##### 问题 2: 对不可变类型的数据应用 shuffle 怎么办? 对于字符串或其他不可变类型的容器来说,无法直接调用 `shuffle` 方法。此时需将其转换成支持的操作形式后再执行相应逻辑。 例子说明: ```python string_data = "hello" list_data = list(string_data) # 转换成列表 random.shuffle(list_data) # 进行混洗 shuffled_string = ''.join(list_data) # 再转回字符串 print(shuffled_string) # 结果类似于 oellh ``` --- ### 注意事项 - 如果尝试传递元组给 `random.shuffle` 将引发 TypeError 错误,因为元组是不可更改的对象。 - 当涉及并行计算或者分布式环境下的种子控制时,请注意设置全局随机种子以便于重现实验结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手把手教你学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值