1

可能重复:
使用 python 随机排列数组

假设我有一个列表myList=[1,2,3,4,5],我想随机打乱它:

disorder(myList) # myList is something like [5,3,2,1,4] or [3,5,1,2,4] now

我使用的方式是

from random import randint
upperBound = len(myList)-1
for i in range(10):
    myList.insert(randint(0, upperBound), myList.pop(randint(0, upperBound)))

这行得通,但我认为这显然不优雅。我想知道是否有一种优雅而有效的方式来实现我的目标。

4

2 回答 2

13

用于random.shuffle()就地打乱列表:

>>> import random
>>> l = range(10)
>>> l
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(l)
>>> l
    [0, 2, 8, 7, 9, 1, 3, 4, 6, 5]
于 2013-01-16T12:21:54.863 回答
9

如果您已经随机导入:

random.shuffle(myList)

它洗牌myList就地。这意味着你只需要运行这个命令,不要使用这个函数的返回值,它总是None.

于 2013-01-16T12:21:32.773 回答