python是通过引用、值还是对象传递的?即使在阅读了一些帖子之后,它也相当令人困惑。我还是不明白我是怎么得到这个奇怪的结果的。有谁能帮忙解释一下这个奇怪的结果是如何产生的,以及如何达到正确的结果?
我试着用python旋转一个2D列表。当没有调用如案例1所示的函数时,我得到了正确的结果。但是,当我把代码放在函数中时,它会返回一个奇怪的结果,这不是我所期望的。为什么案例2中的输出是[9,6,3],[8,5,2],[7,4,1]?它是从哪里来的?
case 1:
matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix = matrix[::-1]
for i in range(len(matrix)):
for j in range (len(matrix[0])):
if i<=j:
matrix[j][i],matrix[i][j] =matrix[i][j], matrix[j][i]
print(matrix)
case 2:
def rotate(matrix) -> None:
print('1',matrix)
matrix = matrix[::-1]
print('2',matrix)
for i in range(len(matrix)):
for j in range (len(matrix[0])):
if i<=j:
matrix[j][i],matrix[i][j] =matrix[i][j], matrix[j][i]
print('3',matrix)
matrix = [[1,2,3],[4,5,6],[7,8,9]]
rotate(matrix)
print(matrix)
case 1 output:
[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
case 2 output:
1 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
2 [[7, 8, 9], [4, 5, 6], [1, 2, 3]]
3 [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
[[9, 6, 3], [8, 5, 2], [7, 4, 1]]