当列表被分配为数组时,在 python 中修改列表时获得不需要的输出

Getting undesired output while modifying list in python, when list is assigned as an array

A = [[8,5,6],
 [5,5,4],
 [11,6,8]] 

def lowertriangle(A):
    for i in range(3):
        for j in range(3):
            A[i][j]=A[i][j]/A[i][i]
        
    break

lowertriangle(A)

print(A)

我期待以 float 作为输出进行适当的除法,但是

A = [[1.0,5.0,6.0],[5,5,4],[11,6,8]] 

出现

任何人都可以帮助解决这个问题,我尝试调试但仍然无法找出错误。

看起来您希望根据 A 中的原始值计算值,但您正在更新它们,所以后面的除法使用更改后的值。

第一个除法集A[0][0]1.0

二等分,i0j1,所以:

A[i][j] = A[i][j] / A[i][i]

相当于:

A[0][1] = A[0][1] / A[0][0]

相当于:

A[0][1] = 5 / 1.0

结果是:

A[0][1] = 5.0

解决这个问题的一种方法是创建一个形状和大小正确的新数组来存储结果,然后根据原始数组更新它。