Python中的列表随机随机播放?

时间:2015-01-03 22:14:21

标签: python list shuffle

我试图获取列表中的随机元素列表。像这样:

[['3','1','2','4'],  
['2','1','3','4'],  
['3','1','2','4'],  
['4','1','3','2']]  

每一行都应包含随机改组的1,2,3,4元素,所以我想重新洗几次。

我使用了以下[是的,可以循环播放,但希望更清楚]:

import random
p1=['1','2','3','4']
p=[]

random.shuffle(p1)
p.append(p1)
print p

random.shuffle(p1)
p.append(p1)
print p

random.shuffle(p1)
p.append(p1)
print p

random.shuffle(p1)
p.append(p1)
print p

但结果是这样的:

>>>
[['2', '4', '1', '3']]
[['3', '4', '1', '2'], ['3', '4', '1', '2']]
[['2', '4', '3', '1'], ['2', '4', '3', '1'], ['2', '4', '3', '1']]
[['1', '3', '4', '2'], ['1', '3', '4', '2'], ['1', '3', '4', '2'], ['1', '3', '4', '2']]

我做错了什么?如何以正确的方式完成这个简单的任务?

1 个答案:

答案 0 :(得分:3)

您要附加您不断修改的相同 p1对象。而是添加副本!即,改变每个

p.append(p1)

p.append(list(p1))