n * n矩阵初始化有什么区别

时间:2019-04-24 18:26:30

标签: python python-3.x

使用方法1和方法2初始化行* col矩阵有什么区别。

方法1(方法错误)

array = [[0]* col] * row

方法2(使用列表推导)(正确的方法)

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无效。

0 个答案:

没有答案
相关问题