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

如何在Python列表中交换镜像对称元素?适配奇数长度列表

如何实现列表镜像对称位置元素的交换(适配奇偶长度)

需要实现一个Python函数,交换列表中所有镜像对称位置的元素(第1个与最后1个、第2个与倒数第2个等),要求:

  1. 不能使用任何Python库函数
  2. 函数不能有返回值
  3. 适配奇数长度的列表,中间元素无需交换

正确实现代码

直接通过循环遍历前半部分索引,与对应对称位置元素交换:

def test(numbers):
    # 仅可在此处编写代码
    length = len(numbers)
    for i in range(length // 2):
        mirror_idx = length - 1 - i
        # 交换对称位置元素
        numbers[i], numbers[mirror_idx] = numbers[mirror_idx], numbers[i]

逻辑解释

  • 先获取列表总长度length,通过length // 2确定需要交换的对数:
    • 偶数长度(如10):length//2=5,循环5次,交换前5个和后5个元素
    • 奇数长度(如9):length//2=4,循环4次,仅交换前4个和倒数4个元素,中间第5个元素保持不动
  • 每个索引i对应的对称位置为length-1-i,比如i=0对应最后一个元素,i=1对应倒数第二个元素
  • 使用Python原生的元组解包完成元素交换,无需额外变量或库函数

原切片方法的问题

你之前的切片方法numbers[:n], numbers[n:] = numbers[:n:-1], numbers[n-1::-1]仅适用于偶数长度列表:

  • 当列表为奇数长度时,numbers[n:]会包含中间元素,赋值后会导致中间元素位置被修改,不符合需求
  • 切片操作本质是生成新列表再替换原列表的切片,逻辑上没有实现"成对交换"的精准控制

测试验证

  • 偶数列表测试:
    原列表:[2, 3, 0, 5, 4, 1, 6, 9, 8, 7]
    交换后:[7, 8, 9, 6, 1, 4, 5, 0, 3, 2]
    
  • 奇数列表测试:
    原列表:[1, 2, 3, 4, 5]
    交换后:[5, 4, 3, 2, 1]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:25:23