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

Python实现列表从第二个元素开始迭代减法及报错修复

解决列表元素对应相减的错误及实现方案

错误原因分析

你遇到的TypeError: 'builtin_function_or_method' object is not subscriptable是因为错误调用了len函数:代码里写的len["b"]是下标访问语法,但len是Python内置函数,必须用括号包裹参数,正确写法是len(b)。

另外,原代码还存在索引越界的问题:当x取到len(b)-1(即4)时,a[x+1]就是a[5],超出了列表a的索引范围(a的最大索引是4),会触发IndexError。


实现方案

方案1:生成包含NaN的结果(与b长度一致)

使用numpy实现:

import numpy as np
a = [1,3,5,10,15]
b = [2,4,9,12,19] 

# 初始化长度与b相同的数组,默认填充NaN
c = np.full(len(b), np.nan)
# 仅遍历a能覆盖的范围(a从第2个元素开始共4个元素,对应b的前4个元素)
for x in range(len(a)-1):
    c[x] = a[x+1] - b[x]

print(c)
# 输出:[ 1.  1.  1.  3. nan]

纯Python实现:

a = [1,3,5,10,15]
b = [2,4,9,12,19] 

c = []
for x in range(len(b)):
    if x + 1 < len(a):
        c.append(a[x+1] - b[x])
    else:
        c.append(float('nan'))

print(c)
# 输出:[1, 1, 1, 3, nan]

方案2:生成无NaN的结果(仅保留有效计算项)

使用numpy实现:

import numpy as np
a = [1,3,5,10,15]
b = [2,4,9,12,19] 

# 取a的第2个元素到末尾,与b的前len(a)-1个元素对应相减
c = np.array(a[1:]) - np.array(b[:len(a)-1])

print(c.tolist())
# 输出:[1, 1, 1, 3]

纯Python实现(列表推导式):

a = [1,3,5,10,15]
b = [2,4,9,12,19] 

c = [a[i+1] - b[i] for i in range(len(a)-1)]

print(c)
# 输出:[1, 1, 1, 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:00:27