Python3内置函数——all与any

先祭出英文文档:

all(iterable)

Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
any(iterable)

Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

 

再上函数信息表格

函数原型

all(iterable)

参数解释

iterable

可迭代对象,参数不可为空,但iterable可空。

返回值

<class 'bool'> True 或 False。

函数说明

当 iterable 中所有元素都为 True 时(或者 iterable 为空),返回 True 。

 

函数原型

any(iterable)

参数解释

iterable

可迭代对象,参数不可为空,但iterable可空。

返回值

<class 'bool'> True 或 False。

函数说明

当 iterable 中有元素为 True 时,则返回 True 。如果当 iterable 为空时,返回 False 。

 

从官方文档中,我们可以得知,all(iterable)完全与下面这段代码等价:

1 def all(iterable):
2     for element in iterable:
3         if not element:
4             return False
5     return True

 

 any(iterable)则与这段代码等价:

1 def any(iterable):
2     for element in iterable:
3         if element:
4             return True
5     return False

 

也就是说,当给定一个不为空的可迭代对象之后:

  对于all函数,如果元素全为真则返回True,否则返回。即只要存在的元素就返回

  对于any函数,只要存在一个为的元素就返回True。不存在为的元素返回假。

另外,当可迭代对象为时,all函数返回Trueany函数返回False。这是因为iterable为空时遍历不执行,直接跳到 line 5 执行 return。

 

范例1:all函数各种参数的各种结果

1 >>> all(['a',(2,4),1,True])     #list都为真
2 True
3 >>> all(['a',(),1,True])        #list元素中有空tuple
4 False
5 >>> all(['a',(2,4),0,True])     #有0
6 False
7 >>> all(['a',(2,4),3,False])    #有False
8 False

 

范例2:any函数各种参数的各种结果

 1 >>> any(['a',(2,4),3,True]) 
 2 True
 3 >>> any(['a',(2,4),3,False])
 4 True
 5 >>> any(['a',(),3,False])   
 6 True
 7 >>> any(['',(),0,False]) 
 8 False
 9 >>> any(('a',(),3,False))
10 True
11 >>> any(('',(),0,False)) 
12 False

 

范例3:all函数参数为空与iterable为空时

 1 >>> all()
 2 Traceback (most recent call last):
 3   File "<pyshell#20>", line 1, in <module>
 4     all()
 5 TypeError: all() takes exactly one argument (0 given)
 6 >>>all([])
 7 True 
 8 >>> all(())
 9 True
10 >>> all({})
11 True
12 >>> all('')                    #空list、truple、dict、str皆为True
13 True

 

范例4:any函数参数为空与iterable为空时

 1 >>> any()
 2 Traceback (most recent call last):
 3   File "<pyshell#37>", line 1, in <module>
 4     any()
 5 TypeError: any() takes exactly one argument (0 given)
 6 >>> any([])
 7 False
 8 >>> any(())
 9 False
10 >>> any({})
11 False
12 >>> any("")
13 False

 

范例5:iterable为空时不遍历

1 >>> p=1
2 >>> i=[]
3 >>> for item in i:            #i为空不遍历
4     print (p)
5 
6 
7 >>>

 

posted @ 2017-08-17 01:49  田大可  阅读(3009)  评论(0编辑  收藏  举报