三元表达式列表解析生成器表达式
- 三元表达式
- 列表解析
- 生成器表达式
三元表达式
在作简单的判断时,三元表达式能简化代码:
def max(x, y):if x > y:return xelse:return y
# 这个函数可以简化为如下形式:
def max_new(x,y):return x if x > y else y
格式:x
if 条件
else y
如果条件成立,返回x, 否则返回y
列表解析
列表解析也是三元表达式,方便我们从一个序列生成另一个序列。
基本格式如下:
举几个栗子:
s = 'hello'
l =[x.upper() for x in s]
print(l) # 打印结果如下:
['H', 'E', 'L', 'L', 'O']list = [1,3,59,45,60]
l_new = [x for x in list if x > 50]
print(l_new) # 打印结果如下:
[59, 60]
在具体应用时,应该先写出上图中的基本结构,有时输出表达式可以写的很复杂,输入序列也可以嵌套,if判断中也可以嵌套 for i in
比如下面这个栗子:
# 文件a.txt内容
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
# 要求使用列表解析,从文件a.txt中取出每一行,做成下述格式
# [{‘name’:'apple','price':10,'count':3},{...},{...},...]file = r'D:\Pythonworks\homework\170616函数列表解析\a.txt'
with open(file,encoding='utf-8')as f:print([{'name': line.strip().split(' ')[0],\'price':line.strip().split(' ')[1], \'count': line.strip().split(' ')[2]}for line in f])
# 分析题目可以发现,输出表达式是字典元素,输入序列是文件的一行,那先把基本的形式写出来:
# [{'name':X, 'price': X, 'count': X} for line in f]
# 然后再从line中分解出X# 方法二:
with open(file,encoding='utf-8')as f:print([{'name':i[0],'price':i[1],'count':i[2]}for i in [line.strip().split(' ') for line in f]])
# 1 strip()是去掉字符串前后的空格和换行符。字符串内的空格也是字符!
# 2 with open() as f: 语句的自动关闭文件功能,是指出了with的缩进,就关闭。
# 3 上面这个嵌套了两个列表解析。最后一个列表,是最终列表的输入序列。
生成器表达式
同列表解析一样,只需要把 []
换成 ()
就可以得到一个生成器。
三元表达式列表解析生成器表达式相关推荐
- 4 三元表达式 列表解析 生成器表达式
三元表达式 #!/usr/bin/env python3 # _*_ coding:utf-8 _*_ # @File : 三元表达式 # @Version : 1.0'''三元表达式能实现简单的 i ...
- python二十二:迭代,三元表达式,列表解析
迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退) 可迭代对象:实现了迭代器协议的对象( ...
- day13 生成器 三元运算 列表解析
本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象想要得到生成器的值必须要用for或者next,list等来获取 生成器生成器就是一个可迭代对象 ...
- 列表生成式,生成器表达式,模块的使用
三元表达式 无论条件成立与否都要返回一个值, 用于简化仅有一个判断的函数(或代码块)递归 递归有循环调用的次数限制,调用函数时,函数相关数据要入栈,而栈区是有限的 二分查找法匿名函数 仅能在定义时使用 ...
- Python - 列表解析式/生成器表达式
列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...
- 三元表达式,列表解析和生成器表达式
三元表达式 在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子 if x > y:print("the max is x") else:print("th ...
- 初学者python笔记(迭代器、生成器、三元表达式、列表解析、send()与yield())
文章目录 迭代器与for循环的关系 1. 迭代器协议 2. 可迭代对象 3. for循环的本质 4. 强大的for循环机制 5. 迭代器如何工作的 6. while循环模拟for循环与迭代器的结合 7 ...
- Python开发——函数【迭代器、生成器、三元表达式、列表解析】
递归和迭代 小明问路篇解释说明 递归:小明-->小红-->小于-->小东:小东-->小于-->小红-->小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...
最新文章
- Delphi存取图像完整解决方案
- 3MIN干完一周的工作量?快来看看应该如何部署 Kubernetes!
- CSS3之计算长度值------calc()
- 来来来,送开发板了。
- 判断sem信号量为零_将信号量递减为零的进程崩溃时,如何恢复信号量?
- Windows Server 2008 R2终端服务器远程授权激活
- Linux学习笔记---记一次rootfs根文件系统下载时掉进的大坑
- 我的知识管理工具列表
- 根据字幕自动配音的软件 如何自动识别语音识别语音生成字幕
- 【转】代价曲线的理解
- 淘宝商品评论获取评论
- vue生成证书模板 并支持图片和PDF格式下载的小demo
- makefile predefined variable $^ $@
- 浙大吴飞“舌战”阿里贾扬清:AI内卷与年薪百万,哪个才是真实?
- 我实现的一些Abp模块
- then 微信小程序_微信小程序异步处理
- 电脑屏幕亮度能否自动调节
- SS中添加多用户失败
- 什么是GPT,如何克隆GPT类型的磁盘?
- 最近发现一个很全面的历史网站,包含世界各国各个时代内容