我已经想出了如何改变列表,但是除了最初的第一项之外,这个函数似乎已经洗牌了。
我的代码:
from random import shuffle
x = list(range(10))
print x
k = 0
while k < len(x):
for i in x:
shuffle(x)
print i
k = k + 1
我在while循环中使用for循环的原因是我希望迭代通过列表最终结束,我不确定这是否可以在for循环中完成。< / p>
运行代码将导致打印原始列表,然后打印10个打印输出,每个打印输出列表中的一个项目。打印的第一个项目始终为0,换句话说,它始终是原始列表中的第一个项目。我无法弄清楚为什么会发生这种情况,可能是因为在调用shuffle函数之前该项已被“选中”。如果是这种情况,在for循环之前对列表进行洗牌会导致列表仅被洗牌一次,而不是在每个项目打印后进行洗牌。
任何人都知道如何在打印之前将第一个项目洗牌?谢谢!
答案 0 :(得分:1)
只需使用
shuffle(x)
for item in x:
print item
没有while
循环。没有改组。就像你使用真正的闪存卡一样,一次洗牌,然后按照你洗牌的顺序出示卡片。
你看到的是你的错误,因为在
的第一次迭代中for i in x:
shuffle(x)
print i
k = k + 1
在shuffle之前分配了 i
。在下一次迭代之前,它不会使用混洗顺序。