Python 3.x 整数列表中的偶数整数之和(无循环)

Python 3.x 整数列表中的偶数整数之和(无循环),python-3.x,Python 3.x,我有一个任务:创建一个函数,该函数将整数列表作为参数,并返回整数列表中所有偶数整数的总和,而不使用任何类型的循环。所有添加操作只能由+操作员完成。下面是我的解决方案 def sumTest(list_Of_Integers): return sum(list(filter(lambda x: x%2 == 0, list_Of_Integers))) 我想问问是否有更好的解决方案,比如不使用python的内置sum() 谢谢你,正如上面评论中所说的,一种更具python风格的方法是使用

我有一个任务:创建一个函数,该函数将整数列表作为参数,并返回整数列表中所有偶数整数的总和,而不使用任何类型的循环。所有添加操作只能由+操作员完成。下面是我的解决方案

def sumTest(list_Of_Integers):
    return sum(list(filter(lambda x: x%2 == 0, list_Of_Integers)))
我想问问是否有更好的解决方案,比如不使用python的内置sum()


谢谢你,正如上面评论中所说的,一种更具python风格的方法是使用:

然而,正如@UloPe所说,这听起来很像一个家庭作业问题,在这种情况下,可能需要一个更递归的方法(而不是使用
sum()
函数):

这将根据列表的大小生成函数堆栈

如果要生成较浅的堆栈,则可以执行以下操作:

def sumTest3(xs):
    if len(xs) == 0:
        return 0

    midpoint = len(xs) / 2
    total    = xs[midpoint] if xs[midpoint] % 2 == 0 else 0

    return sumTest3(xs[:midpoint]) + total + sumTest3(xs[midpoint + 1:])

此版本的堆栈深度将是log(列表大小)

您可以使用
+
使用另一个
lambda
来减少
,但我认为
总和
比这要好得多。(但我认为在Python3中,
reduce
被删除了吗?)另外,
list
应该不需要。稍微有点pythonic(使用列表理解):
sum([x代表x在整数列表中,其中x%2==0])
这听起来很像是一个家庭作业/课程问题。您可能应该研究递归解决方案,因为
sum
reduce
也(在内部)使用循环。谢谢。自从我读了上面的评论之后,我一直在尝试使用递归求和函数。你的解决方案很有效。现在我正在测试
def sumTest2(xs):
    if len(xs) == 0:
        return 0

    total = xs[0] if xs[0] % 2 == 0 else 0

    return total + sumTest2(xs[1:])
def sumTest3(xs):
    if len(xs) == 0:
        return 0

    midpoint = len(xs) / 2
    total    = xs[midpoint] if xs[midpoint] % 2 == 0 else 0

    return sumTest3(xs[:midpoint]) + total + sumTest3(xs[midpoint + 1:])