You need to enable JavaScript to run this app. Python实现列表首尾元素累加迭代至剩余单元素的方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python实现列表首尾元素累加迭代至剩余单元素的方法咨询

列表首尾逐次配对求和的实现方案

代码实现完全匹配你给出的执行示例,没有冗余逻辑,两种写法都适配新手的理解难度。

核心逻辑对齐

先把规则拆解成可落地的步骤,避免一开始理解错流程:

  • 终止条件:只要当前待处理列表长度大于1,就持续执行操作
  • 每一轮操作流程:
    1. 对当前列表,反复取出第一个元素和最后一个元素计算和值,取出的同时把这两个元素从原列表移除
    2. 把每次算出的和值存入新列表,作为下一轮的处理对象
    3. 当列表长度为奇数时,配对到最后会剩余一个无搭档的中间元素,这个元素不能丢弃,要原封不动加入新列表

流程模拟版代码(和你描述的操作逻辑完全一一对应)

current_list = [5,4,3,2,1,6]

while len(current_list) > 1:
    next_round = []
    # 重复配对首尾直到列表长度不足2
    while len(current_list) > 1:
        head = current_list.pop(0)
        tail = current_list.pop()
        next_round.append(head + tail)
    # 处理奇数长度剩下的单个元素
    if current_list:
        next_round.append(current_list.pop())
    current_list = next_round
    print(current_list)

运行输出和示例完全一致:

[11, 5, 5]
[16, 5]
[21]

双指针优化版(规避列表删除的索引错位问题)

pop(0)操作会移动列表内所有后续元素,列表长度较大时效率偏低,换成双指针遍历的写法更稳妥,也不用反复修改原列表:

current_list = [5,4,3,2,1,6]
while len(current_list) > 1:
    left = 0
    right = len(current_list) - 1
    next_round = []
    # 左右指针未相遇时持续配对
    while left < right:
        next_round.append(current_list[left] + current_list[right])
        left += 1
        right -= 1
    # 指针相遇时,对应中间剩余的单独元素
    if left == right:
        next_round.append(current_list[left])
    current_list = next_round
    print(current_list)

新手常踩的错因

  • 边遍历原列表边按索引删元素:列表长度随删除操作动态变化,会导致索引移位,取到错误位置的元素,这是绝大多数实现失败的原因
  • 遗漏奇数长度列表的中间剩余元素:没有单独补这部分的话,遇到奇数长度的列表会丢失数据,最终结果和示例对不上

内容的提问来源于stack exchange,提问作者Phyo Wai Yan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 15:45:08