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)
答案 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
并且有一个方法可以将新整数添加到总数中并将它们附加到列表中。