二维list若用 [[0] * 5] * 5
这样的方式初始化,则指定元素赋值也会造成所有行的该列也被赋值,与预期不符合。
因此建议,全用[[0] * 5 for _ in range(5)]
这样的方式来初始化。
>>> a = [[0] * 5] * 5
>>> a
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> b = [[0] * 5 for _ in range(5)]
>>> b
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> a == b
True
>>> a[0][1] = 1
>>> a
[[0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]
>>> b[0][1] = 1
>>> b
[[0, 1, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]