我想初始化一个多维列表.基本上,我想要一个10x10网格 - 一个包含10个列表的列表,每个列表包含10个项目.
每个列表值应初始化为整数0.
在单行中执行此操作的显而易见的方法:myList = [[0]*10]*10将无法工作,因为它会生成一个包含10个对一个列表的引用的列表,因此更改任何行中的项目会在所有行中更改它.
我见过的文档讨论了使用[:]复制列表的问题,但在使用乘法器时仍然无效:myList = [0]*10; myList = myList[:]*10具有与之相同的效果myList = [[0]*10]*10.
如果没有创建一个myList.append()s 循环,有没有一种快速有效的方法来以这种方式初始化列表?
che*_*yos 22
你可以通过列表理解非常有效地完成它:
a = [[0] * number_cols for i in range(number_rows)]
Run Code Online (Sandbox Code Playgroud)
llb*_*llb 10
这是...嵌套列表理解的工作!
[[0 for i in range(10)] for j in range(10)]
Run Code Online (Sandbox Code Playgroud)