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 に答える