Python all()函数
时间:2020-02-23 14:42:25 来源:igfitidea点击:
Python all()函数是内置函数之一。
它以iterable作为参数,如果iterable的所有元素为true或者为空,则返回True。
Python all()函数
Python all()函数是一种实用程序方法,是以下函数的快捷方式。
def all(iterable): for element in iterable: if not element: return False return True
我们来看一些python all()函数的示例。
带有布尔值的Python all()示例
# iterable has all True list_bools = [True, True, True] print(all(list_bools)) # iterable all elements are not True list_bools = [True, True, False] print(all(list_bools))
输出:
True False
带有空可迭代的Python all()
# iterable is empty list_bools = [] print(all(list_bools))
输出:
True
Python all()与字符串列表
# iterable elements are True string list_strs = ['True', 'True'] print(all(list_strs)) # iterable all elements are true string with different case list_strs = ['True', 'true'] print(all(list_strs)) # iterable all elements are not true string list_strs = ['abc', 'true'] print(all(list_strs)) # iterable all elements are empty string list_strs = ['', 'true'] print(all(list_strs))
输出:
True True True False
当我们想要一个对象布尔值时,python在对象中寻找__bool__
函数。
如果未定义__bool__
函数,则如果定义了len()
函数。
如果len()
输出为非零,则对象布尔值被视为True。
如果一个类都没有定义__len __()或者__bool __()函数,则其所有实例均被视为True。
Python 3使用__bool__
函数来检查对象的布尔值,如果您使用的是Python 2.x,则必须实现__nonzero__
函数。
带有自定义对象的Python all()
让我们使用自定义类测试上述说明。
我们将创建一个自定义Person类,并在列表中使用其对象,然后在其上调用all()函数。
class Person: name = "" def __init__(self, n): self.name = n list_objs = [Person("hyman"), Person("Lisa")] print(all(list_objs)) list_objs = [Person("A"), Person("David")] print(all(list_objs))
输出:
True True
由于我们的对象未定义__len __()和__bool __()函数,因此其布尔值为True。
让我们继续为Person类定义__len __()函数,如下所示。
def __len__(self): print('len function called') return len(self.name)
现在,早期代码片段的输出将是:
len function called len function called True len function called len function called True
注意,当all()与Person对象列表一起使用时,将为每个对象调用len()函数。
现在,为Person类定义__bool__
函数,看看上面的代码会发生什么。
def __bool__(self): print('bool function called') if len(self.name) > 3: return True else: return False
输出:
bool function called bool function called True bool function called False
从输出中可以清楚地看到,如果定义了__bool__函数,那么它将用于获取python对象的布尔值。
请注意,第二个list all()函数的输出为False,因为'A'的长度小于3。