Python中如何将列表的首个元素移动到列表末尾
实现方法
你需要的转换效果本质是将列表首个元素移位到列表末尾,存在多种适配不同场景的可行方案:
1. 原地修改(最简实现)
直接弹出列表首元素,追加到列表末尾即可完成转换:
# 初始化目标列表 numbers = [3, 1, 2] # 执行移位操作 numbers.append(numbers.pop(0))
- 执行完成后
numbers的值为[1, 2, 3] - 会直接修改原列表内容,无额外内存开销,适合列表长度较小的场景
2. 生成新列表(不改动原数据)
如果需要保留原列表的原始内容,可通过列表切片拼接实现:
numbers = [3, 1, 2] # 取出列表从第二个元素开始的所有内容,拼接首元素生成新列表 new_numbers = numbers[1:] + [numbers[0]]
- 最终生成的
new_numbers为[1, 2, 3] - 原
numbers的值不会被修改,适合需要保留原始数据的场景
3. 长列表高性能实现
如果列表长度较大且需要频繁执行移位操作,原生列表的pop(0)为O(n)时间复杂度,性能损耗较高,此时可使用双端队列deque实现,移位操作时间复杂度仅为O(1):
from collections import deque numbers_deque = deque([3, 1, 2]) # 传入参数-1,代表将最左侧的元素移动到最右侧 numbers_deque.rotate(-1) # 如需转回普通列表格式可执行类型转换 new_numbers = list(numbers_deque)
- 大列表下移位操作性能远高于原生列表实现
- 支持转回普通列表格式适配原有业务逻辑
内容的提问来源于stack exchange,提问作者Yaros
相关产品推荐
相关产品推荐

