仅使用函数式编程的列表上的保护子句

Pms*_*smm -1 python functional-programming python-3.x

我面临的问题是,给定一个列表和一个保护条件,我必须验证列表中的每个元素是否都通过保护条件。

如果其中一个元素未通过防护检查,则该函数应返回false。如果它们全部通过了防护检查,那么该函数应该返回true。这个问题的限制是我只能使用单个 return 语句

我的代码:

def todos_lista(lista, guarda):
  for x in lista:
    return(False if guarda(x)==False else True)
Run Code Online (Sandbox Code Playgroud)

Jun*_*sor 5

你应该使用全部

def todos_lista(lista, guarda):
    return all(guarda(x) for x in lista)
Run Code Online (Sandbox Code Playgroud)

或者以更实用的方式:

def todos_lista(lista, guarda):
    return all(map(guarda, lista))
Run Code Online (Sandbox Code Playgroud)

例如,对于范围 0 到 9 ( range(10)):

>>> all(x < 10 for x in range(10))
True
>>> all(x < 9 for x in range(10))
False
>>> all(map(lambda x: x < 9, range(10)))
False
>>> all(map(lambda x: x < 10, range(10)))
True
Run Code Online (Sandbox Code Playgroud)