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

如何在Python中对列表前n个元素执行k位左右移位操作?

实现列表前n个元素的旋转功能

需求说明

函数rotate(a, n, k)需要完成以下功能:

  • 接收列表a,选取前n个元素
  • 将这前n个元素向右移动k位(当k为正数时),或向左移动k位(当k为负数时)
  • 最终返回处理后的完整列表

示例:

rotate([1,2,3,4,5,6,7,8,9], 3, 2) 
    => [4,5,1,2,3,6,7,8,9]

尝试的代码(无法正常运行)

def rotate(a, n, k):
    movable = a[:n]
    const = a[:n]

    for item in movable:
        const[k] = item

问题分析

这段代码存在几个关键问题:

  • 循环中每次都给const[k]赋值,最终只会保留movable的最后一个元素在该位置,完全没有实现旋转逻辑
  • 没有将处理后的前n个元素与原列表中n之后的元素合并
  • 未处理k的绝对值大于n的情况(比如k=5、n=3时,实际等价于k=2)

正确实现方案

可以利用列表切片简洁实现旋转逻辑,同时通过模运算处理多余的移动步数:

def rotate(a, n, k):
    # 处理k的绝对值大于n的情况,取模得到实际需要移动的步数
    k = k % n
    # 前n个元素向右移k位:把最后k个元素移到前面,拼接剩余部分
    rotated_front = a[n - k : n] + a[: n - k]
    # 拼接旋转后的前n个元素和原列表剩余部分并返回
    return rotated_front + a[n:]

测试示例:

print(rotate([1,2,3,4,5,6,7,8,9], 3, 2))  # 输出 [4,5,1,2,3,6,7,8,9]

对于向左移动的场景(k为负),比如rotate([1,2,3,4,5],3,-1),等价于向右移动2位,上述代码会输出[3,1,2,4,5],同样能正确处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:20:27