Python如何优雅删除字符列表空字符及None元素


Posted in Python onJune 25, 2020

这样的一段删除空字符串的代码:

def not_empty(s):
  return s and s.strip()
print(list(filter(not_empty, ['A', '', 'B', None,'C', ' '])))

  代码很简洁,效果嘛,可以丢到 Python在线工具|菜鸟教程 跑跑看,很 nice ~ 但是函数 not_empty 的返回值有点复杂,可以仔细分析一下:

  • - 假设字符串a和b作and运算 a and b:
  • - 若两者均为非空,则 a and b = b;
  • - 若两者均非None,且至少一个为空,即 '',则 a and b = ''
  • - 若至少一个等于None,则 a and b = None

  由于 strip() 函数本身是针对 str 类型进行操作的,所以当 s = None 时,用单独用一句 return s.strip() 会报 “ 'NoneType' object has no attribute 'strip'” 的错误;

  不过如果能保证 s[] 中不包含 None 成员,函数其实也可以直接写成

def not_empty(s):
  return s.strip()
print(list(filter(not_empty, ['A', '', 'B', 'C', ' '])))

  因此, return s and s.strip() 的作用在于排除 s = None 的情况,而不是排除 s = '' 或者 s = '  ' 的情况。

  但是为什么当 s = None 时,return s and s.strip()不会报错呢? 原因是当参与 and 运算的参数从前至后一旦出现一个不可能使得 and 为 True 的情况时,那么 and 运算就提前终止,又因为python本身是解释性语言,一边运行一边检查,还没有运行到 s and s.strip() 中的 s.strip() 时就已经运行完成这一句了(虚晃一枪),自然就不会报错了~

  最后用 lambda 表达式可以对上述程序作进一步封装:

def str_Nempty(s):
	return list(filter(lambda s: s and s.strip(),s))
print(str_Nempty(['A', '', 'B', 'C', ' ']))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python将文本转换成图片输出的方法
Apr 28 Python
python创建和删除目录的方法
Apr 29 Python
Python简单读取json文件功能示例
Nov 30 Python
50行Python代码实现人脸检测功能
Jan 23 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python实现AES加密解密
Mar 28 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
python和opencv构建运动检测器的实现
Mar 03 Python
Python中json.dumps()函数的使用解析
May 17 Python
使用pytorch实现论文中的unet网络
Jun 24 #Python
python连接mysql有哪些方法
Jun 24 #Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 #Python
Python Tornado核心及相关原理详解
Jun 24 #Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 #Python
pytorch SENet实现案例
Jun 24 #Python
利用PyTorch实现VGG16教程
Jun 24 #Python
You might like
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
js使用心得分享
2015/01/13 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
Python实现简单状态框架的方法
2015/03/19 Python
python入门教程之识别验证码
2017/03/04 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
如何用python整理附件
2018/05/13 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Python如何将模块打包并发布
2020/08/30 Python
python自动生成sql语句的脚本
2021/02/24 Python
竟聘演讲稿范文
2013/12/31 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android