我正在尝试创建一个定义辅助函数,该函数对列表列表进行求和以获得总和列表。
例如:
[[1,2,3],[1,2,3],[2,3,4]]
会出现:
[4,7,10]
我在另一篇文章中发现了这个:
[sum(i) for i in zip(*listoflists)]
我需要将其转换为已定义的函数。这是我到目前为止所做的,但它不起作用。
def addhours(listoflists):
for list in zip(*listoflists):
newsum = sum (list)
return newsum
答案 0 :(得分:3)
将列表理解放在函数中。 (使用return
)
>>> def addhours(listoflists):
... return [sum(lst) for lst in zip(*listoflists)]
...
>>> addhours([[1,2,3],[1,2,3],[2,3,4]])
[4, 7, 10]
def addhours(listoflists):
for list in zip(*listoflists):
newsum = sum (list) # <---- This statement overwrites newsum
return newsum # returns the last sum.
您需要一个列表来将总和作为项目。
def addhours(listoflists):
result = []
for lst in zip(*listoflists):
result.append(sum(lst)) # Append to the list instead of overwriting.
return result
顺便说一句,不要使用list
作为变量名。它影响内置函数list
。
答案 1 :(得分:3)
由于函数非常小,您还可以使用匿名定义:
>>> addhours = lambda l: [sum(i) for i in zip(*l)]
>>> addhours([[1,2,3],[1,2,3],[2,3,4]])
>>> [4,7,10]