Python 如何隨機打亂列表 List 排序

2022-07-22 20:06:12 字數 1598 閱讀 6320

現在有乙個list:[1,2,3,4,5,6],我需要把這個list在輸出的時候,是以一種隨機打亂的形式輸出。

專業點的術語:將乙個容器中的資料每次隨機逐個遍歷一遍。

注意:不是生成乙個隨機的list集。

python 3.6

有人可能會通過random內建函式,來間接實現想要的結果。但是這種方式,太原始,也不夠優雅,而且有種重複造輪子的嫌疑。這裡我就不貼我自己通過random實現的效果了。

random中有乙個random.shuffle()方法提供了完美的解決方案。**如下:

x = [1,2,3,4,5,6]

random.shuffle(x)

print(x)

輸出結果:

第一次輸出內容:[6, 5, 1, 3, 2, 4]

第二次輸出內容:[6, 1, 3, 5, 2, 4]

第三次輸出內容:[5, 3, 1, 2, 4, 6]

從結果我們可以看出,輸出是完全隨機的,**量就兩行,不需要random,不需要for迴圈。

def shuffle(self, x, random=none):

"""shuffle list x in place, and return none.

原位打亂列表,不生成新的列表。

optional argument random is a 0-argument

function returning a random float in [0.0, 1.0);

if it is the default none,

the standard random.random will be used.

可選引數random是乙個從0到引數的函式,返回[0.0,1.0)中的隨機浮點;

如果random是預設值none,則將使用標準的random.random()。

"""if random is none:

randbelow = self._randbelow

for i in reversed(range(1, len(x))):

# pick an element in x[:i+1] with which to exchange x[i]

j = randbelow(i + 1)

x[i], x[j] = x[j], x[i]

else:

_int = int

for i in reversed(range(1, len(x))):

# pick an element in x[:i+1] with which to exchange x[i]

j = _int(random() * (i + 1))

x[i], x[j] = x[j], x[i]

注意 :

從**的注釋,我們看到random.shuffle()是對原list做修改,如果需要保留原list,請注意這個細節。

本文首發於bigyoung小站

Python打亂列表

a 1 2,3 4,5 這是乙個列表,需要將裡面的資料無序輸出,就是打亂列表方法一 可直接呼叫random模組裡的shuffle方法 import random a 1,2,3,4,5 random.shuffle a print a 輸出如下 5,3,1,2,4 2,5,1,3,4 方法二 可自己...

java隨機打亂ArrayList或者List

1.直接呼叫shuffle,就是隨機排序 最最簡單的方法,推薦!例 collections.shuffle list shuffle就是洗牌的意思 例 string arr new string list list arrays.aslist arr 直接呼叫shuffle,就是隨機排序 例 col...

python中隨機打亂資料集

假設我們現在有資料 data,label 方法一 打亂資料順序 import random index i for i in range len data random.shuffle index data data index label label index 打亂後的結果 方法二 data s...