您的位置:

Python中随机打乱列表的方法

一、使用shuffle()函数打乱列表

shuffle()函数是Python自带的随机打乱列表的函数,可以直接引入random包。

import random

lst = [1, 2, 3, 4, 5]
random.shuffle(lst)
print(lst)

输出:

[5, 1, 2, 3, 4]

上述代码中,lst为要打乱的列表,random.shuffle()函数将lst内的元素随机打乱,之后输出打乱后的列表lst。

二、使用sample()函数随机取样列表

在Python中,除了shuffle()函数,还有一个sample()函数,可以用来随机取样。

import random

lst = [1, 2, 3, 4, 5]
new_lst = random.sample(lst, len(lst))
print(new_lst)

输出:

[1, 5, 3, 2, 4]

上述代码中,random.sample()函数接受两个参数,第一个参数是要取样的列表,第二个参数是要取样的数量,这里取样数量为列表长度,即全部取样,之后输出取样后的列表new_lst。

三、使用numpy包中的permutation()函数

numpy是科学计算和数据分析中最常用的包之一,它提供了丰富的数学函数和数组处理工具。在numpy中,除了shuffle()函数和sample()函数外,提供了一个用于随机排列的permutation()函数。

import numpy as np

lst = [1, 2, 3, 4, 5]
new_lst = np.random.permutation(lst)
print(new_lst)

输出:

[5, 1, 2, 4, 3]

上述代码中,np.random.permutation()函数接受一个列表作为参数,返回一个随机排列的新列表new_lst。

四、使用random.sample()函数进行加权随机

使用random.sample()函数还可以进行加权随机取样。举例来说,如果我们有一个数字列表lst和一个对应的权重列表weights,我们可以使用random.sample()函数对数字进行加权随机取样,每个数字被选择的概率与其对应的权重成比例。

import random

lst = [1, 2, 3, 4, 5]
weights = [0.1, 0.1, 0.2, 0.3, 0.3]
new_lst = random.choices(lst, weights, k=len(lst))
print(new_lst)

输出:

[4, 5, 3, 3, 5]

上述代码中,random.choices()函数接受三个参数,第一个参数是要取样的列表,第二个参数是列表中每个元素对应的权重,第三个参数是要取样的数量,这里取样数量为列表长度,即全部取样,之后输出取样后的列表new_lst。

五、小结

本文介绍了Python中随机打乱列表的方法,包括使用shuffle()函数、sample()函数和numpy包中的permutation()函数,以及加权随机取样的方法。在实际编程中,我们可以根据具体需要选择不同的方法。