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 内置字符串处理函数的使用方法
Jun 11 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
python分割列表(list)的方法示例
May 07 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
Python jieba库用法及实例解析
Nov 04 Python
Python中私有属性的定义方式
Mar 05 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
套娃式文件夹如何通过Python批量处理
Aug 23 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
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
用python实现学生管理系统
2020/07/24 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
NULL是什么,它是怎么定义的
2015/05/09 面试题
平面设计的岗位职责
2013/11/08 职场文书
分公司经理岗位职责
2013/11/11 职场文书
车间班长岗位职责
2013/11/30 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
小学总务工作总结
2015/08/13 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
Python实现数据的序列化操作详解
2022/07/07 Python