Python all和any函数对空列表的返回值
来源:互联网 发布:use it or lose it 编辑:程序博客网 时间:2024/06/11 02:27
Python有一对内置的函数: all()和any(),他们两个都接收可遍历的对象(iterable, 也就是列表list、元组tuple之类的),all检查所有元素是否全都为真,any检查至少有一个元素为真。
他们的定义是:
all(iterable)
Return True if all elements of the iterable are true (or if the iterable is empty).any(iterable)
Return True if any element of the iterable is true. If the iterable is empty, return False.
从定义可以看出,如果把一个空列表传给any,会得到false的结果,这个容易理解,因为里面没有任何一个元素是真的。但是如果把一个空列表传给all,会得到True,这个似乎不能显而易见。
分析
其实,这个问题可以这么理解:any是“或”运算,验证至少一个元素为真,如果对a到z 26个变量做“或”运算,下列等式应该成立,+号表示或:
any(a, b, c, ..., z) = a + any(b, c, ..., z)= a + b + any(c, ..., z)= ...= a + b + c + ... + z + any([])
为了保证等式成立,必须使any([])为False,否则any的结果永远为True
对等地,all是与运算,验证全部元素为真,*号表示“与”运算:
all(a, b, c, ..., z) = a * any(b, c, ..., z)= a * b * any(c, ..., z)= ...= a * b * c * ... * z * all([])
为了保证等式成立,必须使all([])为True,否则all的结果永远为False
这两个逻辑在写递归函数时就很有用,可以参考Python 实现递归生成器
all的陷阱
all函数的这种特性产生了一个后果:当检查一个序列都是真值时,必须先检查非空,不然可能会漏过空序列:
if matched and all(matched): # do something...
原文链接:http://www.lfhacks.com/tech/python-all-any-empty-list
- Python all和any函数对空列表的返回值
- python: all & any 函数
- python中的函数any()和all()
- python中的函数any()和all()
- python内建函数any()和all()
- python any和all
- python中all()和any()的区别
- python any()和all()用法
- python any()和all()用法
- python any()和all()用法
- Python numpy函数:all()和any()比较矩阵
- 不曾见过的Python函数——any(),all()
- [Python]Build-in方法all和any
- python中any()和all()如何使用
- matlab 中all和any函数
- all、any函数
- Oracle的SOME,ANY和ALL操作
- all和any的区别测试
- Android_获取手机上SD卡和内存中的可用空间的大小
- 淘宝客户端高性能高稳定性施用框架的构架
- ehcache memcache redis 三大缓存比较
- 结构体应用(2)
- IOS面试题------经典
- Python all和any函数对空列表的返回值
- IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解
- Delphi XE,RAD Studio XE v15.0.3953.35171 光盘镜像下载(内附激活工具) 更新update1, helpupdate3
- ios 内存管理个人一些见解
- SLF4j笔记
- 【如果还有明天】我想我是想你了
- Android ActionBar 一步一步分析
- poj 2391 二分+多源最短路+最大流
- ViewPager使用