【发布时间】:2022-06-13 21:36:16
【问题描述】:
这是 leetcode 的问题。我想你们很多人可能都很熟悉。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
matrix.reverse()
n=len(matrix)
for i in range(n):
for j in range(i):
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
使用上面的代码,如果我的输入是 [[1,2,3],[4,5,6],[7,8,9]]。输出为 [[7,4,1],[8,5,2],[9,6,3]],这是预期的。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
matrix=matrix[::-1]
n=len(matrix)
for i in range(n):
for j in range(i):
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
如果我只是将 .reversed() 更改为 [::-1],则输出为 [[9,6,3],[8,5,2],[7,4,1]]。
我不明白为什么我会得到这些不同的结果。除了 .reverse() 就地之外, [::-1] 创建一个新列表,它们之间还有其他不同吗?感谢您的帮助!
【问题讨论】:
-
由于
matrix.reverse()就地,所以通过的列表被修改。matrix=matrix[::-1]在函数本地创建一个新列表,因此传递的列表保持不变。 -
您的第二个
rotate方法不会反转传入的列表;它会创建一个新列表,其中包含与原始内容相反的内容。
标签: python python-3.x