这没有达到您的期望。
q = [[None]*5]*4
它list
多次重用对象。如您所见,当您对一个单元格进行更改时,该单元格位于重用列表对象中。
值为的单个列表使用了[None]
五次。
单个值为的列表使用了[[None]*5]
四次。
q = [ [ None for i in range(5) ] for j in range(4) ]
可能会更多您想要的东西。
这明确避免了重用列表对象。
80%的时间里,词典是您真正想要的。
q = {}
q[0,0]= 5
也可以。您不必从预定义的None
值网格开始。但是很少需要它们。
在Python 2.7和更高版本中,您可以执行此操作。
q = { (i,j):0 for i in range(5) for j in range(4) }
{(0, 1): 0, (1, 2): 0, (3, 2): 0, (0, 0): 0, (3, 3): 0, (3, 0): 0, (3, 1): 0, (2, 1): 0, (0, 2): 0, (2, 0): 0, (1, 3): 0, (2, 3): 0, (4, 3): 0, (2, 2): 0, (1, 0): 0, (4, 2): 0, (0, 3): 0, (4, 1): 0, (1, 1): 0, (4, 0): 0}