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))
我正在尝试获取列表中的随机元素列表。像这样:
[['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))