如果迭代的所有成员都为真,那么python中是否有一个返回true的函数?

我正在尝试学习在python中做简单事情的不同方法,同时还要学习一些功能实践.我有一些用户输入的数字,我想知道它们是否真的是数字.我想出了这种经典的解决方案:

def foo(list_of_inputs):
    for n in list_of_inputs:
       if not hasattr(n, "real"):
           # some number is not a number!
           return False
    # all are numbers
    return True

但后来,我发现了其他可能具有潜力的“事物”:

def foo(list_of_inputs):
    bool_list = map(lambda input: hasattr(input, "real"), list_of_inputs)
    return reduce(lambda x, y: x == y, bool_list)

我认为,如果一个集合的所有成员,可迭代的,或者我正在寻找的任何正确的概念都是“真实的”,那么可能是一个返回“True”的函数,可能已经有点普遍了,而且,这第二次尝试也没有当找到“False”时会返回,而经典的却会…但我觉得它很优雅,也许那是因为我还没有编程.

所以我的问题是:“可能更好”的方法是什么?

解决方法:

如上所述,all函数将完成您想要的操作.您所描述的内容也可以使用str.isnumeric()函数完成.

def foo(listOfInputs):
    return all(map(str.isnumeric,listOfInputs))

编辑:我发现它在[‘1′,’2′,’3.14’,’4’上失败了,这有点烦人.也许有人可以提出比这更聪明的解决方案,但我决定在尝试中包含一个稍微修改过的方法:

def foo(listOfInputs):
    try:
        return all(map(float,listOfInputs))
    except ValueError:
        return False

这适用于:

['1','2','-3','4']
['1','2','3.14','4']
上一篇:hasattr、getattr、setattr反射


下一篇:C/C++ 指针的非空判断