Python:初始化多维列表

fdm*_*ion 9 python list

我想初始化一个多维列表.基本上,我想要一个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)

  • 很好,避免了显而易见的答案所具有的嵌套for循环,但只有在您希望数组初始化的值可以被多次引用时才有效,所以如果您希望数组填充了类的唯一实例,则不行. (2认同)

llb*_*llb 10

这是...嵌套列表理解的工作!

[[0 for i in range(10)] for j in range(10)]
Run Code Online (Sandbox Code Playgroud)