Python:引用以前的自我

时间:2018-01-02 06:54:20

标签: python-3.x

我想在总结系列时参考以前的自我。例如,我有以下数据框系列:

a = [2,5,7,8,3,5,9]

我想创建一个运行总和(让我们调用这个新系列" b"),它引用了前一项:

b = [0, 0+2, ((0+2)+5), ((0+2)+5)+7, ...]

我使用循环来执行此操作:

b=0
for i in range (len(a)):
    b_temp=b[i-1]+a[i]
    b.append(b_temp)

我收到错误消息:

'int' object is not subscriptable

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

我想这是你正在寻找的实施

b=[0]
a=[2,5,7,8,3,5,9]
for i in range (len(a)-1):
    if i-1>=0:
        u=b[i-1]
    else:
        u=0
    b_temp=u+a[i]
    b.append(b_temp)
print (b)

<强>输出

[0, 2, 7, 14, 22, 25, 30]

您的代码存在的问题是,如果您将b初始化为0,则它​​变为整数且

然后调用b[i-1]它不可订阅,因为它不是list它是integer你可以通过b=[]

创建b的列表

答案 1 :(得分:0)

错误意味着对象就像列表或字典而不是整数变量因此它不是可订阅的。

因此您需要定义一个列表,例如b = []

创建一个变量来存储变量的总和,以后可以将这些变量附加到列表对象。

有关代码参考,您可以参考此链接 https://codereview.stackexchange.com/questions/149379/pythonic-way-to-add-each-previous-element-in-list

答案 2 :(得分:-1)

因为您设置了b=0b不是列表或数据框,所以它是一个int。因此,它不是可订阅的。也许你想要b=[0]

(除此之外,由于你的第一次迭代i为0,你将会寻找b[-1],这实际上会起作用,但可能不是你想要的原因)