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

Python列表元素特殊求和:首尾元素无前后驱的处理实现

列表元素与前后索引元素求和的实现方案

需求说明

遍历列表中的每个元素,将其与前一个索引、后一个索引的元素值求和,结果存入空列表。特殊规则:

  • 索引0无前驱,仅将自身与索引1的值求和
  • 最后一个索引无后继,仅将自身与前一个索引的值求和

原代码问题分析

你提供的示例代码存在索引逻辑错误:

  • 当i=0时,vec[i-1]会取列表最后一个元素(Python允许负索引),不符合需求
  • 当i为最后一个索引时,vec[i+1]会触发IndexError索引越界异常

原示例代码:

vec = [1,2,3,4,5]
newVec = []

for i in range(len(vec)):
    newValue = vec[i] + vec[i+1] + vec[i-1]
    # if i + 1 or i - 1 does now exist pass 
    newVec.append(newValue)

修正后的实现代码

以下是符合需求的代码实现:

vec = [1, 2, 3, 4, 5]
newVec = []
n = len(vec)

for i in range(n):
    if i == 0:
        # 第一个元素,仅加自身和下一个元素
        total = vec[i] + vec[i+1]
    elif i == n - 1:
        # 最后一个元素,仅加自身和前一个元素
        total = vec[i] + vec[i-1]
    else:
        # 中间元素,加自身、前一个、后一个元素
        total = vec[i] + vec[i-1] + vec[i+1]
    newVec.append(total)

print(newVec)  # 输出: [3, 6, 9, 12, 9]

代码逻辑解释

  • 先获取列表长度n,方便快速判断首尾索引
  • 遍历每个索引i,根据位置执行不同求和逻辑:
    • 首索引仅计算当前元素与下一个元素的和
    • 尾索引仅计算当前元素与前一个元素的和
    • 中间索引计算当前元素与前后元素的总和
  • 将每次计算的结果添加到newVec中,最终得到符合预期的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:25:35