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

Python累加序列引用前一个自身值报错:'int' object is not subscriptable

解决累加序列时的下标访问错误问题

嘿,我来帮你搞定这个报错的问题~

首先得说清楚你为啥会遇到'int' object is not subscriptable这个错误:你一开始把b定义成了整数0,但后面循环里试图用b[i-1]去访问它的下标——整数类型根本没有下标这个属性呀,所以Python就报错啦。

接下来给你两种解决办法,任选其一都能实现你要的累加序列:

方法一:修正手动循环的写法

把b初始化成列表,并且第一个元素设为你要的初始值0,然后每次循环取列表的最后一个元素和当前a的元素累加,再追加到列表里:

# 假设a是Pandas Series(DataFrame的一列)
import pandas as pd
a = pd.Series([2,5,7,8,3,5,9])

b = [0]  # 初始化列表,第一个元素为0
for num in a:
    next_val = b[-1] + num  # 取b的最后一个元素累加当前数值
    b.append(next_val)

# 此时b的结果是 [0, 2, 7, 14, 22, 25, 30, 39]

方法二:用Pandas自带的累加函数(更高效)

如果你的a是DataFrame的列(Pandas Series),用cumsum()方法可以直接生成累加序列,再在开头插入初始值0就行,比手动循环高效得多,尤其是数据量大的时候:

import pandas as pd
a = pd.Series([2,5,7,8,3,5,9])

# 方式1:用concat(Pandas 2.0+推荐,append已被标记为弃用)
b = pd.concat([pd.Series([0]), a.cumsum()], ignore_index=True)

# 方式2:用append(旧版本Pandas可用)
# b = pd.Series([0]).append(a.cumsum(), ignore_index=True)

# 最终b的结果和手动循环一致

核心问题就是初始化b的类型错误,换成列表或者Pandas Series就能正常访问元素啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:53:53