You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python数组右旋k步代码报错list assignment out of range原因排查

错误原因及修正说明

1. 空列表直接索引赋值触发越界

你初始化的temp是空列表[],在Python里,列表的索引只能访问或修改已经存在的元素位置。空列表没有任何元素,当执行temp[(i+k)%l] = nums[i]时,不管计算出的索引是多少,这个位置在temp里都不存在,直接抛出list assignment out of range错误。

2. 未满足原地修改的要求

就算解决了越界问题,最后一行nums=temp也不符合题目要求:题目明确要求原地修改nums数组,而这行代码只是把函数内部的局部变量nums指向了新列表temp,原传入的数组根本没被修改。


修正方案示例

方案1:基于原思路的临时数组修正

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        l = len(nums)
        k = k % l  # 处理k大于数组长度的情况,减少无效计算
        temp = [0] * l  # 初始化和nums等长的列表,避免索引越界
        for i in range(l):
            temp[(i + k) % l] = nums[i]
        nums[:] = temp  # 通过切片赋值原地修改原数组

方案2:原地旋转(空间复杂度O(1),更高效)

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        l = len(nums)
        k = k % l  # 取模处理k超出数组长度的情况
        
        # 定义反转函数
        def reverse(start, end):
            while start < end:
                nums[start], nums[end] = nums[end], nums[start]
                start += 1
                end -= 1
        
        # 三次反转实现旋转
        reverse(0, l - 1)
        reverse(0, k - 1)
        reverse(k, l - 1)

内容的提问来源于stack exchange,提问作者Himanshi Muley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:45:57