【发布时间】:2014-04-02 09:37:42
【问题描述】:
我已经想出了如何打乱列表,但该函数似乎打乱了除原始第一项之外的所有内容。
我的代码:
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 循环本身内完成。
运行代码将打印原始列表,然后打印 10 份,每份都是列表中的一项。打印的第一项始终为 0,或者换句话说,它始终是原始列表中的第一项。我无法弄清楚为什么会发生这种情况,可能是因为在调用 shuffle 函数之前该项目已经被“选中”。如果是这种情况,在 for 循环之前打乱列表会导致列表仅打乱一次,而不是在打印每个项目后打乱。
有人知道我如何在第一个项目被打印之前对其进行洗牌吗?谢谢!
【问题讨论】:
-
shuffle将整个列表打乱。你为什么要洗很多次而不是一次? -
我正在尝试创建一个脚本来练习词汇卡,每个单词卡都是由单词及其定义组成的元组。通过在读取每张“卡片”后洗牌,我可以避免将卡片设置为模式。
-
谢谢@thefourtheye!这似乎行得通!
标签: python list python-2.7 random shuffle