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通过post提交数据的方法
May 06 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
python实现logistic分类算法代码
Feb 28 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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代码审核的详细介绍
2013/06/13 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
js实现图片上传并预览功能
2018/08/06 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python正则实现计算器功能
2017/12/14 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
scrapy-splash简单使用详解
2021/02/21 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
static关键字的用法
2013/10/07 面试题
销售经理工作职责范文
2013/12/03 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
生物科学专业自荐书
2014/06/20 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
学校运动会广播稿
2014/10/11 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python