使用sum函数时遇到问题

时间:2013-03-06 04:05:01

标签: python python-3.x

输入(列表)将是类似于[[1,2],[5,6],[4,6]]的列表。我试图将整行添加到一起来测试它是偶数还是奇数。

def evenrow(list):
    for row in list:
        for item in row:
            newNums+=item
            n=sum(newNums)
            print(n)

3 个答案:

答案 0 :(得分:2)

首先不要使用'list'作为变量名。其次你为int值调用sum而不是列表,这就是你得到错误的原因。请检查您的代码。

不确定,但您的代码可能如下:

def evenrow(list):
    for row in list:
        value = sum(row)
        if values is even: # put your condition here
            # do something
        else:
            print "Value is odd"

答案 1 :(得分:1)

只是另一种方法:

def evenrow(lst):
    return sum(map(sum,lst))%2 == 0 #True if even, False otherwise.

这是这样的:

外部summap的所有项目相加,sumlst应用于list中的每个项目。在python2中,map返回一个map对象,而在python3中,它返回一个sum对象。这会传递到外部map功能,该功能会累计def evenrow(lst): return sum(itertools.chain(*a)) % 2 == 0 中的所有项目。

a

这会扩展chain(每个子列表)中的所有项目,并将它们链接在一起,作为{{1}}对象。然后它将所有项目加在一起,并确定总和是否均匀。

答案 2 :(得分:0)

您不需要以下代码行:n=sum(newNums)。您已经在newNums += item行总结了所有行项。其次,在代码中使用它之前,必须声明newNums。因此,固定版本的代码将如下所示:

def evenrow(list):
    for row in list:
        newNums = 0
        for item in row:
            newNums += item
        print(newNums)
顺便说一句:你应该考虑接受以前的一些问题的答案,否则没有人会花时间回答你的新问题。