为什么我的函数修改输入变量?

时间:2019-08-12 20:59:07

标签: python python-3.x list

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

override func numberOfSections(in tableView: UITableView) -> Int {
    return sections.count
}

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

rot_matrix = rotate(matrix)

答案 1 :(得分:0)

根据文档,切片返回(列表)对象的副本。Python Docs for list iterable

很显然,您没有将返回的副本分配给另一个变量。您只是将旋转后的矩阵分配回主变量matrix

上面的屏幕截图来自文档-> https://docs.python.org/2/library/functions.html