时间:2021-05-22
这样的一段删除空字符串的代码:
def not_empty(s): return s and s.strip()print(list(filter(not_empty, ['A', '', 'B', None,'C', ' '])))代码很简洁,效果嘛,可以丢到 Python在线工具|菜鸟教程 跑跑看,很 nice ~ 但是函数 not_empty 的返回值有点复杂,可以仔细分析一下:
由于 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', ' ']))以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
三种主要的写法有:第一种:ifXisNone;第二种:ifnotX;当X为None,False,空字符串"",0,空列表[],空字典{},空元组()这些时,no
Python字符串常用功能汇总1、字符串的定义#定义空字符串>>>name=''#定义非空字符串>>>name="luoahong"#通过下标访问>>>name
分析在Python中,字符串是不可变的。所以无法直接删除字符串之间的特定字符。所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列表是可变的,这样就可
以下公共方法支持列表,元组,字典,字符串。内置函数Python包含了以下内置函数:函数描述备注len(item)计算容器中元素个数del(item)删除变量de
JavaScript的假值列表如下,值类型0NumberNaN(非数字)Number''(空字符串)StringfalseBooleannullObjectun