【发布时间】:2013-07-14 04:40:35
【问题描述】:
我想初始化一个多维列表。基本上,我想要一个 10x10 的网格 - 一个包含 10 个列表的列表,每个列表包含 10 个项目。
每个列表值都应该初始化为整数 0。
在单行中执行此操作的明显方法:myList = [[0]*10]*10 不起作用,因为它会生成一个包含 10 个对一个列表的引用的列表,因此更改任何行中的项目会更改所有行中的项目。
我看到的文档谈到了使用[:] 来复制列表,但是在使用乘数时仍然不起作用:myList = [0]*10; myList = myList[:]*10 与myList = [[0]*10]*10 具有相同的效果。
没有创建myList.append()s的循环,有没有一种快速有效的方法来以这种方式初始化列表?
【问题讨论】:
-
我认为
[:]的想法也可以,例如[x[:] for x in [[0]*10]*10]. -
请参阅 this question 以了解为什么
[[0]*10]*10无法按预期工作。