在Python中对列表中的列表值求和

在Python中对列表中的列表值求和,python,nested-lists,Python,Nested Lists,我在使用这一点Python代码时遇到了一些问题。挑战如下: “编写一个名为sum_list的函数。sum_list应该取一个 参数,它将是整数列表的列表。总和列表应 返回将每个列表中的每个数字相加的总和 下面是一些测试函数的代码行。您可以 更改变量的值以使用测试函数 不同的输入 如果您的功能正常工作,这将最初打印:78“ 这是我的代码,到目前为止,我已经设法整理好了。按原样,我得到如下输出: def sum_lists(list_of_lists): result = [] #

我在使用这一点Python代码时遇到了一些问题。挑战如下:

“编写一个名为sum_list的函数。sum_list应该取一个 参数,它将是整数列表的列表。总和列表应 返回将每个列表中的每个数字相加的总和

下面是一些测试函数的代码行。您可以 更改变量的值以使用测试函数 不同的输入

如果您的功能正常工作,这将最初打印:78“

这是我的代码,到目前为止,我已经设法整理好了。按原样,我得到如下输出:

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])