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

Python如何实现列表左右旋转 修复负偏移量旋转结果错误问题

列表旋转代码修复方案

问题根源

原代码未对偏移量r做基于列表长度的模运算归一化处理。当r的绝对值大于列表长度时,Python原生切片会直接返回完整列表或空列表,最终拼接结果和原列表完全一致,不符合预期。

你给出的测试场景中,列表长度为9,r=-34时,l[-34:]返回完整原列表,l[:-34]返回空列表,二者拼接后就是原列表,和你遇到的错误输出一致。

修复方法

在旋转逻辑前对r做模运算,将偏移量映射到[0, 列表长度-1]的有效范围内,Python的取模运算天然支持负数计算,无需额外处理正负逻辑,同时补充空列表的边界场景判断。

修复后完整代码如下:

def rotate(l, r):
    n = len(l)
    # 处理空列表边界,避免除以0错误
    if n == 0:
        return l
    # 偏移量归一化,适配任意正负、任意大小的偏移值
    r = r % n
    return l[r:] + l[:r]

l = eval(input())
r = int(input())

print(rotate(l, r))

效果验证

你的测试用例中,-34 % 9 = 2,最终等效于执行l[2:] + l[:2],输出结果正好是预期的['C', 'D', 1, 2, 3, 4, 5, 'A', 'B']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:07