Python Transpose Matrix给我错误的python

时间:2018-09-27 20:12:00

标签: python

我写了一个转置矩阵函数,但是当我尝试运行它时,输出中的值最后还是一样。附带有输出图片。我的代码也被注释了。

def transpose(any_matrix):
    _row = len(any_matrix)
    _col = len(any_matrix[0])
    temp_matrix = []
    #multiplies [0] by the number of rows (old) to create new row
    temp_row = [0]*_row
    #creates matrix with number of columns as rows  
    for x in range(_col):
        temp_matrix += [temp_row]
    for r in range(len(any_matrix)):
        for c in range(len(any_matrix[0])):
            value = any_matrix[r][c]
            temp_matrix[c][r] = value
return temp_matrix

a = [[4, 5, 6], [7,8,9]]
print(transpose(a))

    #input [[4,5,6]
    #       [7,8,9]]

    #correct answer [   [4,7],
    #                   [5,8],
    #                   [6,9]   ]

我不想使用其他库,例如numpy等。 output

1 个答案:

答案 0 :(得分:3)

here对此行为进行了更详细的解释,所以我建议您看一下。

在使用行phy_fixed_rotation = true; vspeed += gravity; vspeed -= sign( vspeed ) * min( abs( vspeed ), friction ); hspeed -= sign( hspeed ) * min( abs( hspeed ), friction ); phy_speed_x = hspeed; phy_speed_y = vspeed; phy_position_x = x; phy_position_y = y; phy_rotation = -image_angle; 时,您将列表对象temp_matrix += [temp_row]添加到数组中(在这种情况下为三次)。

你说

temp_row

该值在temp_matrix[c][r] = value 对象中被覆盖,因为temp_row temp_matrix[c]是同一对象,因此当您去打印整个temp_matrix,它打印出它是什么:3引用同一矩阵。

使用temp_row方法应通过向list.copy()添加新的list对象(即temp_row的对象)来避免这种不希望的有效指针传递。 这是一些工作代码:

temp_matrix