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

Python列表向右旋转k次时k大于列表长度运行异常问题排查

问题原因

代码异常的核心原因是未对旋转次数做列表长度取模处理:

  • 列表向右旋转k次的效果,和旋转k % 列表长度次完全一致,旋转次数等于列表长度时相当于回归原状态
  • 当旋转次数超过列表长度时,len(list) - num会得到负数,此时range()函数的运行结果不符合预期:第一个循环会生成远多于预期的索引值,第二个循环因终止值为负直接变成空循环,最终输出的列表长度、元素顺序都会出错
  • 额外说明:原代码使用list作为参数名,覆盖了Python内置的list类型关键字,属于不规范的编码习惯,容易引发后续不可预知的错误,建议修改为其他自定义参数名
修复后的代码
list1 = [1, 2, 3, 4, 5, 6]

def rotate(input_list, num):
    # 兼容空列表场景
    if not input_list:
        return []
    # 旋转次数取模,等效为0到列表长度-1次的有效旋转
    num = num % len(input_list)
    output = []
    for value in range(len(input_list) - num, len(input_list)):
        output.append(input_list[value])
        
    for value in range(0, len(input_list) - num): 
        output.append(input_list[value])
          
    return output

rotateNum = int(input("请输入你想要将列表向右旋转的次数:"))
print(rotate(list1, rotateNum))
更简洁的Python实现

利用列表切片特性可以更高效地实现旋转逻辑:

def rotate(input_list, num):
    if not input_list:
        return []
    num = num % len(input_list)
    return input_list[-num:] + input_list[:-num]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:45:05