2016-12-15 61 views
0
OriginalName = ["a", "b", "c"] 

ShuffleList = random.shuffle(OriginalName) 
print ShuffleList 

当我运行上面的代码时,它返回'None'。我正在尝试创建一个新的列表,一旦它被洗牌。是否可以从混洗列表创建新列表?

我想创建已随机创建另一个列表,并且可以像["c", "a", "b"]

+1

THRE的一个类似的问题在这里:http://stackoverflow.com/questions/976882/shuffling-a -use-list-of-objects-in-python'random.shuffle'这样做就是这样,所以返回None并且改变原始数据 - 要么复制它,要么使用random.sample(OriginalName,len(OriginalName))'而不是 – doctorlove

回答

9

random.shuffle是重新组织原始列表 - 你只是一个清单的工作。

尝试像

OriginalName = ["a", "b", "c"] 
ShuffleList = list(OriginalName) # making a new list copy 

random.shuffle(ShuffleList) 

现在你有两个名单,原来和洗牌。

附注:确保使用蛇壳(original_name而不是OriginalName)。这是Python的惯例。

+0

I w ant另一个列表,它是随机创建的,并且类似于'[“c”,“a”,“b”]'。这可能吗? – NorthernStars

+0

是的,'ShuffeList'是你的原始列表的副本,然后在答案中混洗。 –

3

先创建新列表,然后洗牌。

shuffled = OriginalName[:] 
random.shuffle(shuffled) 
print shuffled 
0

我会用random.sample

import random 
l = list(range(5)) 
print(random.sample(l, len(l))) 

印像

[4, 0, 2, 1, 3]