使用
下面的程序不会修改变量myMatrix
:的原始值
def transpos(matrixx: list):
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
myMatrix = newMatrix
myMatrix = [[1, 2], [3, 4]]
transpos(myMatrix)
print(myMatrix)
解决这个问题的正确方法是什么?
返回新列表并将其分配给myMatrix。
def transpos(matrixx: list):
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
return newMatrix
myMatrix = [[1, 2], [3, 4]]
myMatrix = transpos(myMatrix)
print(myMatrix)
使用global
关键字
一个解决方案是使用如下全局关键字:
def transpos(matrixx: list):
global myMatrix # <--- 'global' give a reference to myMatrix inside
# the function transpos
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
myMatrix = newMatrix
myMatrix = [[1, 2], [3, 4]]
transpos(myMatrix)
print(myMatrix)