【问题标题】:Python: On a function that does not return anythingPython:在一个不返回任何东西的函数上
【发布时间】:2020-10-15 09:04:58
【问题描述】:

我正在解决Rotate Array leetcode 问题:

给定一个数组,将数组向右旋转 k 步,其中 k 为非负数。

我在我的电脑上测试了以下代码(它似乎完成了所需的工作):

nums = [1,2,3,4,5,6,7]
k = 3
nums = nums[-k:] + nums[:len(nums)-k]
print(nums)

>> [5,6,7,1,2,3,4]

因此,我尝试了以下解决方案:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        nums = nums[-k:] + nums[:len(nums)-k]

但是,以下测试用例出错了:

实际上,这个测试用例在我没有定义任何函数(我在上面提供)的情况下运行时测试成功。然而,实际上,当我为rotate 定义一个特殊函数时,它并没有起作用。然后,我得出结论,我在定义函数时可能做错了。

【问题讨论】:

  • @S3DEV 问题状态:Do not return anything, modify nums in-place instead.
  • 将它添加到类有什么意义?
  • @balderman 这是 LeetCode 的默认设置。

标签: python arrays function


【解决方案1】:
nums = nums[-k:] + nums[:len(nums)-k]

只是重新绑定 本地变量nums,它不会改变nums之前引用的原始对象。请改为执行以下操作:

nums[:] = nums[-k:] + nums[:len(nums)-k]

由于切片分配是nums 引用的对象的突变,因此旋转将影响传递给函数的列表对象。

【讨论】:

猜你喜欢
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
相关资源
最近更新 更多