首页 > 解决方案 > 尽管有原始值而不是副本,但Python函数没有返回

问题描述

我有一个代码,如果列或行包含零,我将其归零,我有自己的函数,但是当我使用它时它返回 None ,我复制了我的矩阵并对其进行了更改,然后我将值转换为原来的一个,但我仍然没有得到回报。我的函数不应该只返回值更新矩阵值。这是代码:

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)

标签: pythonfunctionmatrix

解决方案


ConvertMatrix(numOfRows, 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)

推荐阅读