使用方法1和方法2初始化行* col矩阵有什么区别。
array = [[0]* col] * row
array = [[0] * col for i in range(row)]
使用上述方法1的方法。如果我们修改给定(row,cel)中的一个元素。相同的元素将被复制到后续行中。
>>> row, col= 5, 5
>>> array = [[0]*col] * row
>>> array
[[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]]
>>> array[0][0]
0
>>> array[0][0]=1 # initialize (0,0)=1
>>> array
[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]] # same element is copied in (1...row-1, col)
使用方法2。工作正常。
>>> array = [[0]*col for i in range(row)]
>>> array
[[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]]
>>> array[0][0]=1 # initialize (0,0)=1
>>> array
[[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] # works as excepted.
>>>
是否为一维数组,并且用户是否使用方法1创建零个*元素数的列表。方法1将起作用。如果他/她使用二维数组,则方法1无效。