首页 > 解决方案 > 为什么我的函数要修改输入变量?

问题描述

嗨,我有一个旋转矩阵的函数,但是我不知道它为什么起作用。

def rotate(matrix):
        matrix[:] = [[row[i] for row in matrix[::-1]] for i in range(len(matrix))]

我知道“[:]”会创建原始矩阵的副本,但为什么原始矩阵也会旋转?

如果我想在不修改输入的情况下返回一个新的旋转矩阵,我该怎么办?

谢谢!!!

标签: pythonpython-3.xlist

解决方案


使用array[:] = [...]覆盖数组内的值。最简单的解决方案是直接返回结果并将函数的返回值存储在一个新变量中。

def rotate(matrix):
    return [[row[i] for row in matrix[::-1]] for i in range(len(matrix))]

rot_matrix = rotate(matrix)

推荐阅读