Python 中的列表随机洗牌列表?

list of list random shuffle in Python?

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

[['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']]

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

您正在附加您不断修改的 相同 p1 对象。相反,附加一个 copy!即,改变每个

p.append(p1)

进入

p.append(list(p1))