在Python中对列表中的列表值求和
我在使用这一点Python代码时遇到了一些问题。挑战如下: “编写一个名为sum_list的函数。sum_list应该取一个 参数,它将是整数列表的列表。总和列表应 返回将每个列表中的每个数字相加的总和 下面是一些测试函数的代码行。您可以 更改变量的值以使用测试函数 不同的输入 如果您的功能正常工作,这将最初打印:78“ 这是我的代码,到目前为止,我已经设法整理好了。按原样,我得到如下输出:在Python中对列表中的列表值求和,python,nested-lists,Python,Nested Lists,我在使用这一点Python代码时遇到了一些问题。挑战如下: “编写一个名为sum_list的函数。sum_list应该取一个 参数,它将是整数列表的列表。总和列表应 返回将每个列表中的每个数字相加的总和 下面是一些测试函数的代码行。您可以 更改变量的值以使用测试函数 不同的输入 如果您的功能正常工作,这将最初打印:78“ 这是我的代码,到目前为止,我已经设法整理好了。按原样,我得到如下输出: def sum_lists(list_of_lists): result = [] #
def sum_lists(list_of_lists):
result = []
#extract what list from the bigger list
for listnumber in list_of_lists:
sum = 0
#add the value of the smaller list
for value in listnumber:
sum += value
result.append(sum)
#add the result values together
#for resultvalue in result:
# result += resultvalue
return sum(result)
其中,每个列表的值相加在一起,但在result=[]部分中仍然是3个单独的值:
[10, 26, 42]
当我尝试返回sum(result)
时,我遇到了“TypeError:'int'对象不可iterable”。
同样,当我尝试创建另一个For循环并将result=[]的值加在一起时,我得到了相同的TypeError,这让人困惑,因为当我创建一个简单函数并应用sum()时对于return语句,我得到了一个没有问题的汇总输出
我被难住了。有人有什么建议吗?您已经用同名变量覆盖了函数
sum
。重命名变量(我称之为total
),它将按预期工作
list_of_lists = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
def sum_lists(list_of_lists):
result = []
#extract what list from the bigger list
for listnumber in list_of_lists:
total = 0
#add the value of the smaller list
for value in listnumber:
total += value
result.append(total)
#add the result values together
#for resultvalue in result:
# result += resultvalue
return sum(result)
print(sum_lists(list_of_lists))
没有什么可以阻止您在内部循环中使用sum
def sum_lists(list_of_lists):
result = []
for listnumber in list_of_lists:
result.append(sum(listnumber))
return sum(result)
您可以使用列表理解
def sum_lists(list_of_lists):
return sum([sum(lst) for lst in list_of_lists])
重命名变量“sum”,因为它是一个保留关键字实际错误消息是
TypeError:“int”对象不可调用
-不。。。iterable
。原因是您将sum
定义为一个包含数字的变量,因此最后的sum(result)
不起作用,因为sum
是您的数字,而不是函数。当您询问堆栈溢出时,请小心包含准确的错误消息,因为给出错误的错误消息可能会浪费每个人的时间。顺便说一下,您想做的事情可以在一行中完成:返回和(map(sum,list of list))
。这里最好使用生成器表达式,而不是列表理解。我很喜欢这首歌的简洁性…@CoffeeTableEspresso是的,我同意,但我认为这首歌稍微清楚了一点
def sum_lists(list_of_lists):
return sum([sum(lst) for lst in list_of_lists])