繁体   English   中英

改组后附加到列表(Python)

[英]Append to list after shuffle (Python)

Newby问题:我很难弄清楚为什么下面的代码不起作用。 我正在尝试制作一个嵌套列表,其中10个嵌套列表中的每个列表的顺序不同。 我得到的是相同的列表,以相同的顺序重复了10次。

所以我要:[[1、2、4、3],[4、2、3、1],[2、4、3、1]]

但我得到:[[2,3,1,4],[2,3,1,4],[2,3,1,4]]

<pre>from random import shuffle

myList = ["file1", "file2", "file3", "file4"]
longList = []

for x in range(0,10):
    shuffle(myList)
    longList.append(myList)

print(longList)<code>

提前致谢!

d

这是因为longList内部的对象引用全部是对myList对象的myList

正如解释在这里random.shuffle改变myList到位,所以每次通话时间random.shuffle它,它会覆盖其内容。

解决方案可以是每次随机播放列表时都克隆它,并且有几种方法可以使用( 如何在Python中克隆列表 )。

在以下代码中,我选择对其进行切片:

from random import shuffle

myList = ["file1", "file2", "file3", "file4"]
longList = []

for x in range(0,10):
    shuffle(myList)
    longList.append(myList[:])

随机播放在原位运行,返回无。 奇怪的是,它尝试10次返回相同的列表。 可能您做的次数不够,所以随机播放几次会返回相同的结果。 尝试对它进行大量测试。 也许做:

random.seed(x)

在循环内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM