python - 尽管有原始值而不是副本,但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)
解决方案
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)
推荐阅读
- ruby-on-rails - 最终事务上的 Rails Stripe 集成错误
- java - 在一个州,我有日期字段,因此我收到一条错误消息“java.util.date 未注释,因此不能用于序列化”
- spring-boot - 使用 PagingAndSortingRepository 过滤数据
- python - 无需索引和执行潜在的慢查询即可知道查询的长度(使用 firebird db,在 python 中使用 fdb 游标执行查询)
- javascript - 如何防止自定义圆形光标添加滚动?
- python-3.x - 返回具有包含数组中子字符串的行的列
- python - 来自熊猫数据库的 3D 散点图的类型错误
- python - 与其余代码并行监控数据库和 ssh 连接
- .net - 如何解决来自不同下游服务器的 SocketException“连接尝试失败...”?
- mysql - mysql phpmyadmin 替换包含问号的字符串