如何在Python中实现数组元素循环移位(禁止使用import)
Python实现数组元素循环移动(无需import)
核心需求:将数组末尾元素循环移到开头
针对这个需求,有两种简单易懂的实现方式,适合新手理解:
方法1:利用列表切片(简洁高效)
Python的列表切片可以快速实现元素拼接,无需循环:
# 单步右移:末尾元素移到开头 arr = [1, 2, 3, 4, 5] arr = arr[-1:] + arr[:-1] print(arr) # 输出: [5, 1, 2, 3, 4]
arr[-1:]:取列表最后一个元素组成的子列表(比如这里是[5])arr[:-1]:取列表除最后一个元素外的所有元素(比如这里是[1,2,3,4])- 把两个子列表拼接,就得到了末尾元素移到开头的新数组
如果需要移动n步右移(比如移动3步),只需调整切片的索引,同时处理n大于数组长度的情况(取模避免错误):
arr = [1, 2, 3, 4, 5] n = 3 n = n % len(arr) # 当n大于数组长度时,取模等价于实际需要移动的步数 arr = arr[-n:] + arr[:-n] print(arr) # 输出: [3, 4, 5, 1, 2]
方法2:用pop和insert操作(直观易理解)
如果觉得切片抽象,可以用列表的内置方法分步操作,更贴近“手动移动”的逻辑:
# 单步右移:末尾元素移到开头 arr = [1, 2, 3, 4, 5] if arr: # 先判断数组非空,避免报错 last_element = arr.pop() # 移除并获取最后一个元素 arr.insert(0, last_element) # 将元素插入到数组开头 print(arr) # 输出: [5, 1, 2, 3, 4]
arr.pop():默认删除列表最后一个元素,并返回该元素arr.insert(0, last_element):在索引0的位置(数组开头)插入元素
要实现多步右移,只需循环执行上述操作n次:
arr = [1, 2, 3, 4, 5] n = 3 n = n % len(arr) for _ in range(n): last = arr.pop() arr.insert(0, last) print(arr) # 输出: [3, 4, 5, 1, 2]
拓展:左移元素(开头元素移到末尾)
如果需要把开头元素移到末尾,逻辑类似:
- 切片法:
arr = arr[1:] + arr[:1] - pop+insert法:
first_element = arr.pop(0); arr.append(first_element)
内容的提问来源于stack exchange,提问作者Joe Heap
相关产品推荐
相关产品推荐

