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

如何修复Python中删除列表首尾及中间元素的函数运行问题

问题修正方案

现有代码的核心问题

  • 函数名不符合要求,需求指定函数名为chosen,当前命名为first
  • 冗余判断逻辑:题目已经明确输入列表长度始终为奇数,不需要额外处理偶数长度的分支
  • 方法使用错误:list.remove()是删除列表中第一个匹配传入值的元素,不是删除指定索引位置的元素,列表存在重复值时会出现逻辑错误,删除指定索引元素应该用pop()或者切片操作
  • 动态长度导致索引计算错误:每删除一个元素后列表长度会变化,后续再计算中间索引时已经对应不上原列表的中间位置
  • 类型注解不完整:要求参数和返回值的注解为list[int],当前仅标注了list
  • 存在副作用:直接修改传入的原列表,会对外部调用方的原始数据产生影响,不符合纯函数的设计预期

最优实现方案

直接用切片操作实现,不会修改原列表,逻辑更简洁清晰:

def chosen(lst: list[int]) -> list[int]:
    mid = len(lst) // 2
    # 拼接首元素后到中间元素前的片段,和中间元素后到尾元素前的片段
    return lst[1:mid] + lst[mid+1:-1]

如果坚持用删除元素的逻辑实现,需要提前计算所有待删除的索引,并且从后往前删除避免索引偏移,同时复制原列表避免修改原始输入:

def chosen(lst: list[int]) -> list[int]:
    res = lst.copy()
    n = len(res)
    mid = n // 2
    # 从后往前删,避免前面的删除操作影响后续索引的正确性
    res.pop(-1)
    res.pop(mid)
    res.pop(0)
    return res

验证测试

  • 输入chosen([9,3,5,7,1]),返回[3,7],符合示例要求
  • 输入chosen([0,2,7,0,0,5,0,0,0]),返回[2,7,0,5,0,0],符合示例要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:45:09