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

如何对长度不确定的列表按相邻两两规则交换元素索引位置

相邻两两交换列表元素的最优实现方案

最优原地修改方案(推荐,无额外空间开销)

  • 实现逻辑:从索引0开始,每次步长为2遍历列表,仅处理到倒数第二个元素,奇数长度的列表最后一个元素会自动跳过不需要处理,无需额外判断长度奇偶性
  • 代码实现:
# 直接修改原列表
my_list = [1, 2, 3, 4, 5]
for i in range(0, len(my_list) - 1, 2):
    my_list[i], my_list[i+1] = my_list[i+1], my_list[i]
print(my_list) # 输出 [2, 1, 4, 3, 5]
  • 复杂度说明:时间复杂度O(n),空间复杂度O(1),是性能最高的实现方式,适配任意长度的列表。

生成新列表的方案(不修改原列表)

  • 实现逻辑:分别提取原列表的奇数位元素、偶数位元素,两两拼接后补全可能存在的最后一个奇数长度遗留元素
  • 代码实现:
my_list = [1,2,3,4]
new_list = [x for pair in zip(my_list[1::2], my_list[::2]) for x in pair] + (my_list[-1:] if len(my_list) % 2 else [])
print(new_list) # 输出 [2,1,4,3]
  • 复杂度说明:时间复杂度O(n),空间复杂度O(n),适合需要保留原列表的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:36:03