【问题标题】:Python list .reverse() works but [::-1] does not? What are the differences between .reverse() and [::-1]?Python list .reverse() 有效,但 [::-1] 无效? .reverse() 和 [::-1] 有什么区别?
【发布时间】: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


猜你喜欢
  • 2019-01-08
  • 2011-04-07
  • 2012-09-26
  • 2010-10-15
  • 2012-04-15
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
相关资源
最近更新 更多