【发布时间】:2023-03-12 10:30:02
【问题描述】:
给定一个列表x = [1,0,0,1,1]我可以反复使用random.shuffle(x) 来打乱这个列表,但是如果我尝试这样做一个for循环,列表不会打乱。
例如:
x = [1,0,0,1,1]
k = []
for i in range(10):
random.shuffle(x)
k.append(x)
return x
基本上,k包含相同的未洗牌的 x 序列?有什么解决办法吗?
【问题讨论】:
-
random.shuffle就位。您正在使用对同一列表的引用填充k,因此结果中的所有十个列表都将采用相同的随机顺序。也许尝试一个浅拷贝,k.append(x[:])? -
@jonrsharpe 但是在 python shell 中,我能够不断地执行 random.shuffle(x) 并在每次调用后检查 x,x 确实被打乱了。
-
是的,当然可以,我不是说别的。
k实际上包含相同的x序列shuffled,但只有这么多独特的订单,所以有时它会与你的起始位置相同。跨度> -
@jonrsharpe 我明白了!现在我明白了。
标签: python python-3.x python-2.7 list