【Python】列表生成式和利用内建函数判断是否是字符串
来源:互联网 发布:康丝数据 编辑:程序博客网 时间:2024/05/22 10:41
列表生成式
[含有x的表达式 for x in 迭代 if条件(可选)]
对于for...in循环当中,如果每一次if条件都满足时,就可以执行含有x的表达式。利用if来筛选出想要的结果。
练习:利用内建函数判断是否是字符串
如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()
方法,所以列表生成式会报错。
使用内建的isinstance
函数可以判断一个变量是不是字符串。
请修改列表生成式,通过添加if
语句保证列表生成式能正确地执行:
L1 = ['Hello', 'World', 18, 'Apple', None]L2 =
希望看到的输出:
['hello', 'world', 'apple']
【分析】
题目要求是将L1列表中的18,None去掉(这个说法不太好),或者说是将字符串保留,并且转化成小写。既然要进行筛选,那么需要用到if条件。根据列表生成式,首先要遍历L1列表中的每个元素进行判断for x in L1,然后进行筛选是否是字符串if isinstance(x, str),最后执行表达式x.lower()
L1 = ['Hello', 'World', 18, 'Apple', None]L2 = [x.lower() for x in L1 if isinstance(x, str)]print(L2)
【拓展】
1.想让L2列表中保留18和None,并对字符串做小写改变。
列表生成式中,含有x的表达式,可以写作为一个函数表达式,f(x) for x in L1。
而这个函数表达式中包含你想进行筛选的条件,这样就可以对L1中所有元素都进行处理,然后根据函数表达式中的条件返回不同的结果。
def f(x): if isinstance(x, str): return x.lower() elif x is None: return 0 else: return xL3 = [f(s) for s in L1]print(L3)
同样,也可以使用列表生成式。
L4 = [x.lower() if isinstance(x, str) else x for x in L1 ]print(L4)
此处 if isinstance(x, str) else x, 在for ...in中遍历每个x,对x进行判断,如果x是字符串则执行x.lower表达式,否则x不执行表达式,没有做任何改变,直接保留下来。
if + 条件在此处情形中放在了for...in的前面!
或者这样理解:一般 if 为真时,再执行后面的语句,然而这里,if 为真时,执行的x.lower表达式放在了 if 前面。
2.若果把字符串变成小写,使None变为0
L4 = [x.lower() if isinstance(x, str) else 0 if x is None else x for x in L1]print(L4)
首先判断x是否为字符串,若果是,执行x.lower;如果为假,进入第二个 if ,并判断,若为真,执行else 0,若为假,执行else x。
【PS】
此篇记录参考了一位博主的笔记。感谢博主笔记!
http://blog.csdn.net/ozihengjun/article/details/78320983?reload#reply
阅读全文
0 0
- 【Python】列表生成式和利用内建函数判断是否是字符串
- Python:利用内建函数将字符串转化为整数
- Python:利用内建函数将字符串转化为整数
- Python列表内建函数
- 判断是否是字符串
- 利用Double.parseDouble判断字符串是否是有效数字
- 利用顺序栈判断一个字符串是否是对称串
- android 判断字符串是否为空和是否是手机号
- Python字符串内建函数
- 【python】 字符串内建函数
- python 字符串内建函数
- python字符串内建函数
- C++ 判断是否是子字符串和回文字符串
- python中快速判断一个对象是否是字符串
- python判断输入的字符串是否是回文联
- python实现判断一个字符串是否是合法IP地址
- python 判断字符串时是否是json格式方法
- 【Python】判断一个字符串是否是合法IP地址
- 对于机器学习,到底该选择哪种编程语言?
- 维基解密再曝猛料 开始公布 CIA 间谍软件项目源码
- slowhttptest
- Android的widget初入门径
- 设计模式——行为型模式之借助策略模式减少使用不必要的if-else if -else和switch-case(一)
- 【Python】列表生成式和利用内建函数判断是否是字符串
- vue-cli 接口返回数据key为id 不能被iview的表格渲染,关键字id冲突,更改key值
- Web app root system property already set to different value: 'webapp.root'
- 大型互联网架构与集群技术
- C语言程序例题
- Hive分析函数之LAG、LEAD、FIRST_VALUE、LAST_VALUE学习
- Linux xshell 登录执行脚本
- 曾经它认识我,我不认识他的Linux系统
- opencv 图像显示函数使用