2d列表中的项目总和

时间:2013-05-18 01:20:00

标签: list python-3.x 2d

我尝试实现一个函数evenrow(),它接受一个二维的整数列表,如果表的每一行总和为偶数则返回True,否则返回False(即,如果某行总和为奇数)数)

    usage
    >>> evenrow([[1, 3], [2, 4], [0, 6]])
    True
    >>> evenrow([[1, 3], [3, 4], [0, 5]])
    False

这是我到目前为止所得到的:

    def evenrow(lst):
        for i in range(len(lst)-1):
            if sum(lst[i])%2==0:     # here is the problem, it only iterates over the first item in the lst [1, 3] - i cant figure this out - range problem?      
                return True
            else:
                False

如何让循环迭代列表中的每个项目[1,3],[2,4],[0,6]而不仅仅是第一个?

好吧,我现在已经走到了这一步:

    def evenrow(lst):
        for i in range(len(lst)-1):
            if sum(lst[i]) %2 >0:
                return False
        else:
            return True

我在执行不同的列表时得到以下答案:

     >>> evenrow([[1, 3], [2, 4], [0, 6]])
     True
     >>> evenrow([[1, 3], [3, 4], [0, 5]])
     False
     >>> evenrow([[1, 3, 2], [3, 4, 7], [0, 6, 2]])
     True
     >>> evenrow([[1, 3, 2], [3, 4, 7], [0, 5, 2]])
     True

(最后一个不正确 - 应该是假的)我只是不明白为什么这不起作用......

1 个答案:

答案 0 :(得分:0)

你太早回来了。您应该检查所有对,之后只返回True,如果遇到奇数,则返回False

剧透警报:

def evenrow(lst):
    for i in range(len(lst)-1):
       if sum(lst[i]) % 2 != 0:     # here is the problem, it only iterates over the first item in the lst [1, 3] - i cant figure this out - range problem?      
           return False
    return True

这将实现目标。