我试图通过迭代创建一个随机的键列表:
import random
keys = ['1', '2', '3', '4', '5']
random.shuffle(keys)
print keys
Run Code Online (Sandbox Code Playgroud)
这很完美.但是,如果我把它放在循环中并捕获输出:
a = []
for x in range(10):
random.shuffle(keys)
a.append(keys)
Run Code Online (Sandbox Code Playgroud)
我得到10次同样的洗牌?!显然这里有些根本错误......提前谢谢.
小智 16
问题是您正在对列表进行洗牌,然后将列表的引用添加到组合列表中.因此,您最终会使用相同的列表结构10次."基本变化"是必须在附加之前复制列表.
这里有一个更加"pythonic"的方式来实现与列表理解相同的结果.
import random
def shuffleACopy(x):
b = x[:] # make a copy of the keys
random.shuffle(b) # shuffle the copy
return b # return the copy
keys = [1,2,3,4,5,6,7,8]
a = [shuffleACopy(keys) for x in range(10)]
print(a)