随机播放不会改变列表中的第一项

时间:2014-03-01 06:51:57

标签: python list python-2.7 random shuffle

我已经想出了如何改变列表,但是除了最初的第一项之外,这个函数似乎已经洗牌了。

我的代码:

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循环之前对列表进行洗牌会导致列表仅被洗牌一次,而不是在每个项目打印后进行洗牌。

任何人都知道如何在打印之前将第一个项目洗牌?谢谢!

1 个答案:

答案 0 :(得分:1)

只需使用

shuffle(x)
for item in x:
    print item

没有while循环。没有改组。就像你使用真正的闪存卡一样,一次洗牌,然后按照你洗牌的顺序出示卡片。

你看到的是你的错误,因为在

的第一次迭代中
for i in x:
    shuffle(x)
    print i
    k = k + 1
在shuffle之前分配了

i。在下一次迭代之前,它不会使用混洗顺序。