使用折叠的列表中最大的偶数

Largest even number in a list using fold

我想完成这个:

我认为这可能与以下内容类似:

def fold(f, v, l):
    for x in l:
        v = f(v, x)
    return v

def biggest_even_number(xs):
    l = [i for i in xs if i % 2 == 0]
    return fold(l)

我知道这是错误的,但我不知道如何设置。我将如何使用 "fold" 函数完成上述任务?

执行如下操作:

def fold(l):
    biggest = float("-inf")
    for i in l:
        biggest = max(i, biggest)
    return biggest

def biggest_even_number(xs):
    l = [i for i in xs if i % 2 == 0]
    return fold(l)

fold 函数看起来不错。你只需要用正确的参数调用它:

def biggest_even_number(xs):
    l = [i for i in xs if i % 2 == 0]
    return fold(max, float("-inf"), l)

如果不是作业,你可以使用内置的reduce(),它基本上做同样的事情:

def biggest_even_number(xs):
    l = [i for i in xs if i % 2 == 0]
    return reduce(max, l, float("-inf"))

感谢 @Steven Rumbalski,对于任何试图找到序列最大值的人来说,您甚至不需要 reduce:

def biggest_even_number(xs):
    return max(i for i in xs if i % 2 == 0)