Python 中判断列表是否为空的方法


Posted in Python onNovember 24, 2019

在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么?

在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素。

我们可以把判断表达式可以分为两个阵营:

  1. 对空列表的显式比较
  2. 对空列表的隐式求值

这意味着什么?

显式比较

我们从显式比较开始说起,无论我们使用列表符号 [] 还是声明空列表的函数 list() ,遵循的策略是查看待检查列表是否与空列表完全相等。

# 都是用来创建空列表
a = []
b = list()
print(a == b) # True

另外,我们可以使用 len() 函数返回列表中的元素个数。

a = []
if len(a) == 0:
  print("The list is empty")

隐式求值

和显式比较相反,隐式求值遵循的策略是:将空列表求值为布尔值的 False ,将有元素填充的列表求值为布尔值的 True 。

a = []
b = [1]
if a:
  print("Evaluated True")
else:
  print("Evaluated False")
if b:
  print("Evaluated True")
else:
  print("Evaluated False")
# 输出
Evaluated False
Evaluated True

那么,显式比较和隐式求值有什么区别呢?

很多人习惯于使用显式比较的方式。但是如果你遵循鸭子类型的设计风格,那么会更加偏向于使用的是隐式方法。

什么是鸭子类型

「鸭子类型」这个此来自以下短语:

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

从功能上讲,这是对对象实际数据类型压力较小的一种确认。在鸭子类型中,关注点在于对象的行为,能作什么(比如,可迭代 iterable);而不是关注对象所属的类型。鸭子类型在动态语言中经常使用,非常灵活。

鸭子类型优先考虑便利性而非安全性,从而可以使用更灵活的代码来适应更广泛的用途,它不会像传统方式那么严格。

我们应该使用哪种方式?

当我们越了解隐式求值,就越倾向于使用这种方式,因为我们知道空列表将被求值为 False 。

a = []
print(bool(a)) # False

这使得我们可以合并那些很长的检查表达式,如:

# 之前
if isinstance(a, list) and len(a) > 0:
  print("Processing list...")
# 之后
if a:
  print("Processing list...")

当然,最终的选择还取决于这个本次检查的意图:

  • 如果你检查空列表是为了对其进行迭代,那么隐式求值是更合适的方法。
  • 如果你检查空列表是为了在之后调用列表中的方法,那么可以考虑使用显式比较来同时验证数据类型。

总结

以上所述是小编给大家介绍的Python 中判断列表是否为空的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python连接池实现示例程序
Nov 26 Python
Python getopt模块处理命令行选项实例
May 13 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python实现ftp文件传输功能
Mar 20 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
详解Flask开发技巧之异常处理
Jun 15 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 #Python
python求质数列表的例子
Nov 24 #Python
解决Python中回文数和质数的问题
Nov 24 #Python
使用python实现回文数的四种方法小结
Nov 24 #Python
python代码打印100-999之间的回文数示例
Nov 24 #Python
Django 自定义分页器的实现代码
Nov 24 #Python
基于python的列表list和集合set操作
Nov 24 #Python
You might like
PHP中的integer类型使用分析
2010/07/27 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python类的用法实例浅析
2015/05/27 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
学院领导推荐信
2013/10/30 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年宣传工作总结
2015/04/08 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
详解Python函数print用法
2021/06/18 Python