在Python中随机播放

时间:2011-10-28 15:21:53

标签: python random shuffle

是否有一种直接的方法可以在Python中返回一个混洗数组而不是将其混洗到位?

例如,而不是

x = [array]
random.shuffle(x)

我正在寻找像

这样的东西
y = shuffle(x)

维护x。

注意,我不是在寻找一个函数,而不是像:

x=[array]
y=x
random.shuffle(x)

6 个答案:

答案 0 :(得分:18)

带有sorted函数的

key返回随机值:

import random
sorted(l, key=lambda *args: random.random())

或者

import os
sorted(l, key=os.urandom)

答案 1 :(得分:12)

使用random实现自己的操作非常简单。我会写如下:

def shuffle(l):
    l2 = l[:]           #copy l into l2
    random.shuffle(l2)  #shuffle l2
    return l2           #return shuffled l2

答案 2 :(得分:8)

写下你自己的。

import random

def shuffle(x):
    x = list(x)
    random.shuffle(x)
    return x

x = range(10)
y = shuffle(x)
print x # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print y # [2, 5, 0, 4, 9, 3, 6, 1, 7, 8]

答案 3 :(得分:5)

您正在寻找没有功能。只需复制一份清单。

答案 4 :(得分:2)

你可以将numpy.random.permutation用于列表或数组,但如果你已经有一个numpy数组,那么它是正确的函数。对于具有混合类型的列表,转换为numpy数组将进行类型转换。

textarea1.append(textfield1.getText());

答案 5 :(得分:0)

在其他地方使用此作为演示,因此认为可能值得分享:

import random

x = shuffleThis(x)


def shuffleThis(y):
    random.shuffle(y)
    return(y)
#end of Shuffle Function

希望这很有用。