Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数返回none,尽管存在原始值而不是copy_Python_Function_Matrix - Fatal编程技术网

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。我现在试过了,它成功了!非常感谢。