Teo*_*off 5 python list python-2.7 python-3.x
给定一个列表,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 unshuffled?任何解决办法?
正如 @jonrsharpe 所提到的,random.shuffle在列表中进行适当的操作。当您追加时x,您正在追加对该特定对象的引用。因此,在循环结束时,k包含十个指向同一对象的指针!
要纠正此问题,只需在每次迭代时创建列表的新副本,如下所示。这是通过list()在附加时调用来完成的。
import random
x = [1,0,0,1,1]
k = []
for i in range(10):
     random.shuffle(x)
     k.append(list(x))