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