开满天机
random.shuffle()更改x列表到位。在原地改变结构的Python API方法通常返回None,而不是修改后的数据结构。如果您想基于现有列表创建一个新的随机混洗列表,其中现有列表按顺序保存,您可以使用random.sample()输入的全长:x = ['foo', 'bar', 'black', 'sheep']random.sample(x, len(x)) 您还可以使用sorted()with random.random()作为排序键:shuffled = sorted(x, key=lambda k: random.random())但是这会调用排序(O(NlogN)操作),而对输入长度的采样只需要进行O(N)操作(与使用的进程相同random.shuffle(),从收缩池中交换随机值)。演示:>>> import random>>> x = ['foo', 'bar', 'black', 'sheep']>>> random.sample(x, len(x))['bar', 'sheep', 'black', 'foo']>>> sorted(x, key=lambda k: random.random())['sheep', 'foo', 'black', 'bar']>>> x['foo', 'bar', 'black', 'sheep']