1

Python初学者运行2.7

我想要一个列表,随着新值的添加,它会不断求和。但是,我不断收到Attribute Error: 'int' object has no 'append' function。我了解基本问题-您不能附加到整数-但想找到解决方法。你们有解决方案吗?

我的代码的简化版本,然后是我想避免的可能解决方案。

my_list = sum([])

def myfunction (i):
    return i 

thing = myfunction (1)
my_list.append(thing)

thing2 = myfunction (2)
my_list.append(thing2)

def function_2 (a,b):
    #function which uses my_list

我想我可以做以下解决方案,但我想避免它(干扰现有代码)。

my_list = []
summed_my_list = sum (mylist)

def myfunction (i):
    return i 

thing = myfunction (1)
my_list.append(thing)

thing2 = myfunction (2)
my_list.append(thing2)
4

2 回答 2

1

如果您不需要列表,那么问题很简单,因为您只需要

total += value 

在每一步。

从列表派生的类

如果您确实需要列表和总和(自动更新),您可以创建一个从列表派生的类,例如 - 当您附加到它时应该自动求和。

class mylist(list):
    tot = 0
    def append(self, value):
        super(mylist, self).append(value)
        self.tot += value

示例用法

#!/usr/bin/python

class mylist(list):
  tot = 0
  def append(self, value):
    super(mylist, self).append(value)
    self.tot += value


a = mylist()
a.append(1)
a.append(20)
print a.tot
print a

输出:

21
[1,20]
于 2012-08-03T19:08:27.067 回答
0

这条线是你的问题:

my_list = sum([])

这将返回整数0。只需初始化您的列表:

my_list = []

并附加到那个。

如果您还想保留一个运行总计,请为总计设置另一个变量:

my_total = 0

my_total += new_number

并且有一个方法可以将新整数添加到总数中并将它们附加到列表中。

于 2012-08-03T19:03:29.707 回答