Python:附加到'int'函数的解决方法

时间:2012-08-03 18:59:27

标签: python python-2.7

Python初学者运行2.7

我希望有一个列表,在添加新值时会不断加总。但是,我一直得到属性错误:'int'对象没有'追加'功能。我理解基本问题 - 你不能附加到整数 - 但想找到一个解决方法。你们中有人有解决方案吗?

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

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)

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

这一行是你的问题:

my_list = sum([])

返回整数0。只需初始化您的清单:

my_list = []

并附加于此。

如果您还想保留一个总计,还有另一个变量:

my_total = 0

my_total += new_number

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