Python函数返回none,尽管存在原始值而不是copy
我有一个代码,其中我将列或行归零,如果它包含零,我有我自己的函数,但当我使用它时,它不会返回任何值,我复制了我的矩阵并对其进行了更改,然后我将值转换为原始值,但仍然没有返回。我的函数不应该返回值,只更新矩阵值。代码如下:Python函数返回none,尽管存在原始值而不是copy,python,function,matrix,Python,Function,Matrix,我有一个代码,其中我将列或行归零,如果它包含零,我有我自己的函数,但当我使用它时,它不会返回任何值,我复制了我的矩阵并对其进行了更改,然后我将值转换为原始值,但仍然没有返回。我的函数不应该返回值,只更新矩阵值。代码如下: def ConvertMatrix(NumOfRows,M): for i in range(numOfRows): Col=len(M[i]) M1=[[M[i][j] for j in range(Col)] for i in range(n
def ConvertMatrix(NumOfRows,M):
for i in range(numOfRows):
Col=len(M[i])
M1=[[M[i][j] for j in range(Col)] for i in range(numOfRows)]
for i in range(numOfRows):
for j in range(Col):
if M[i][j]==0:
for n in range(Col):
M1[i][n]=0
for k in range(numOfRows):
M1[k][j]=0
M=[[M1[i][j] for j in range(Col)] for i in range(numOfRows)]
numOfRows = int(input())
M = [[int(item) for item in input().split(' ')] for i in range(numOfRows)]
M=ConvertMatrix(numOfRows,M)
print(M)
ConvertMatrix(numorrows,M)
不返回任何内容,这意味着它隐式返回None
。因此
M = ConvertMatrix(numOfRows, M)
将M
变为None
。为了使这种变异函数方法起作用,您应该应用两种更改:
将函数中的最后一行更改为:
M[:] = [[M1[i][j] for ...]
# slice assignment mutates the passed list object ...
# otherwise you are just rebinding a local variable
不要分配函数结果:
# ...
ConvertMatrix(numOfRows, M)
print(M)
如果没有“return”语句,所有函数都将返回none。我现在试过了,它成功了!非常感谢。