Python随笔8:Python内置序列函数之all、any函数

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

Python内置序列函数系列所有文章都以几个术语为基础:可迭代对象(iterable)、迭代器(iterator)、序列(sequence)、生成器(generator)等。若对此不太理解,可移步Python随笔4前面部分查看。

今天讨论一组有意思的函数:all与any函数。

1.all函数

all函数的具体语法是:

all(iterable)——参数iterable(可迭代对象)的所有元素之中,没有1个是False,则返回True;若有至少1个是False,则返回False。

这是什么意思呢?两层意思:第一,当可迭代对象中所有元素都为True的话,all(iterable)函数返回True;第二,若可迭代对象本身是空的,比如一个空的list,也就是没有任何元素的时候,依然返回True,因为没有任何元素,依然表示所有元素中没有1个是False。

all(iterable)函数等价于:

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

2.any函数
any函数的具体语法是:

any(iterable)——参数iterable(可迭代对象)的所有元素之中,只要有1个是True,则返回True;否则返回False。

这个跟上面all函数是一样的道理,依然两层意思:第一,当可迭代对象中所有元素里至少有1个是True的话,any(iterable)函数返回True;第二,若可迭代对象本身是空的,比如一个空的list,也就是没有任何元素的时候,那么返回False,因为没有任何元素,就表示所有元素中没有1个是True。

any(iterable)函数等价于:

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

这两个函数的例子如下:

l1 = ['a', 3, (2, 3), {'a': 1}]  # 里面所有元素全为真值。

l2 = [1, 2, 0, 'a']  # 里面元素有真值,也有假值。

l3 = [0, {}, set(), {}]  # 里面所有元素全为假值。

all(l1)
Out[30]: True

all(l2)
Out[31]: False

all(l3)
Out[32]: False

any(l1)
Out[33]: True

any(l2)
Out[34]: True

any(l3)
Out[35]: False

l4 = []  # l4是一个空的列表(可迭代对象)。

all(l4)
Out[37]: True

any(l4)
Out[38]: False

3.小结
all函数和any函数实际上是基本逻辑“与”、“或”在可迭代对象(如序列)层面上的体现与应用。注意并理解当可迭代对象本身是空(比如列表为空)时的特殊情况。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容