python中all()的“奇怪”现象
来源:互联网 发布:哪个网络电话软件好 编辑:程序博客网 时间:2024/04/29 22:18
先看一下下面几条语句结果,可能会觉得不是那么符合直觉。
>> all([])True>> all([[]])False>> all([[[]]])True
一开始在项目中发现all([])返回True,感觉很不理解。
其实all()的原理差不多是这样的:
def all(iterable): for x in iterable: if bool(x) is False: # 只要有一个不满足,就返回False return False return True
① 对于all([]), 列表没有元素,也就没有不满足的,于是就返回True了
② 对于all([[]]), 列表有1个元素,这个元素是[],bool([])是False,所以这个元素不满足,等价于 all([False]),所以整个断言就失败了,返回False
③ 对于all([[[]]]),列表有1个元素,这个元素是[[]], 即有一个空列表的列表,bool([[]])是True,所以这个元素满足,等价于all([True]),所以整个断言成功,返回True
对于②和③来说,它们都是有1个元素,区别在于元素[]和[[]],一个是没有东西
, 一个是有一个东西,虽然这东西是空列表
。bool(没有东西)是False, bool(有东西)是True。
1 0
- python中all()的“奇怪”现象
- Python中奇怪的现象
- c++中 堆的一个奇怪现象
- JQuery中DIV的奇怪现象
- Java String中split的奇怪现象
- ie8中一个很奇怪的现象。
- 求救!!!奇怪的现象!
- 奇怪的现象
- noskipws()的奇怪现象!
- 好奇怪的现象
- 奇怪的UNION现象
- java的奇怪现象
- 奇怪的现象
- c语言中一个“奇怪的现象”及其思考
- WINCE中编辑框(CEdit)的“奇怪现象”
- CSS解决IE中奇怪的左右border断线现象
- CSS解决IE中奇怪的左右border断线现象
- java会合构架中TreeSet的奇怪现象两个
- OpenCV用于人脸检测
- Android Studio 添加Assets目录
- 实例完成Universal_Iamge_loader框架实现android图片的缓存
- Android系统篇之----编写简单的驱动程序并且将其编译到内核源码中
- Atitit。木马病毒原理机密与概论以及防御
- python中all()的“奇怪”现象
- 【51单片机学习过程记录】11 中断之外部中断的应用
- Android学习之路------RecyclerView的使用(1)
- Atitit mac os 版本 新特性 attilax大总结
- hdu 3486 Interviewe (二分+RMQ)
- CSS3 - 说说CSS上的第一个变量currentColor,及扯扯inherit
- atitit。wondows 右键菜单的管理与位置存储
- android仿微信图片选择
- hdu1231 并查集模板题