2013-01-16 108 views
0

可能重复:
Shuffle an array with 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))) 

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

回答

9

使用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] 
9

如果您已经导入随机:

random.shuffle(myList) 

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