• 三元表达式
  • 列表解析
  • 生成器表达式

三元表达式

在作简单的判断时,三元表达式能简化代码:

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 上面这个嵌套了两个列表解析。最后一个列表,是最终列表的输入序列。

生成器表达式

同列表解析一样,只需要把 [] 换成 () 就可以得到一个生成器。

三元表达式列表解析生成器表达式相关推荐

  1. 4 三元表达式 列表解析 生成器表达式

    三元表达式 #!/usr/bin/env python3 # _*_ coding:utf-8 _*_ # @File : 三元表达式 # @Version : 1.0'''三元表达式能实现简单的 i ...

  2. python二十二:迭代,三元表达式,列表解析

    迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)   可迭代对象:实现了迭代器协议的对象( ...

  3. day13 生成器 三元运算 列表解析

    本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象想要得到生成器的值必须要用for或者next,list等来获取 生成器生成器就是一个可迭代对象 ...

  4. 列表生成式,生成器表达式,模块的使用

    三元表达式 无论条件成立与否都要返回一个值, 用于简化仅有一个判断的函数(或代码块)递归 递归有循环调用的次数限制,调用函数时,函数相关数据要入栈,而栈区是有限的 二分查找法匿名函数 仅能在定义时使用 ...

  5. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  6. 三元表达式,列表解析和生成器表达式

    三元表达式 在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子 if x > y:print("the max is x") else:print("th ...

  7. 初学者python笔记(迭代器、生成器、三元表达式、列表解析、send()与yield())

    文章目录 迭代器与for循环的关系 1. 迭代器协议 2. 可迭代对象 3. for循环的本质 4. 强大的for循环机制 5. 迭代器如何工作的 6. while循环模拟for循环与迭代器的结合 7 ...

  8. Python开发——函数【迭代器、生成器、三元表达式、列表解析】

    递归和迭代 小明问路篇解释说明 递归:小明-->小红-->小于-->小东:小东-->小于-->小红-->小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...

  9. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

最新文章

  1. Delphi存取图像完整解决方案
  2. 3MIN干完一周的工作量?快来看看应该如何部署 Kubernetes!
  3. CSS3之计算长度值------calc()
  4. 来来来,送开发板了。
  5. 判断sem信号量为零_将信号量递减为零的进程崩溃时,如何恢复信号量?
  6. Windows Server 2008 R2终端服务器远程授权激活
  7. Linux学习笔记---记一次rootfs根文件系统下载时掉进的大坑
  8. 我的知识管理工具列表
  9. 根据字幕自动配音的软件 如何自动识别语音识别语音生成字幕
  10. 【转】代价曲线的理解
  11. 淘宝商品评论获取评论
  12. vue生成证书模板 并支持图片和PDF格式下载的小demo
  13. makefile predefined variable $^ $@
  14. 浙大吴飞“舌战”阿里贾扬清:AI内卷与年薪百万,哪个才是真实?
  15. 我实现的一些Abp模块
  16. then 微信小程序_微信小程序异步处理
  17. 电脑屏幕亮度能否自动调节
  18. SS中添加多用户失败
  19. 什么是GPT,如何克隆GPT类型的磁盘?
  20. 最近发现一个很全面的历史网站,包含世界各国各个时代内容

热门文章

  1. Linux系统编程7:入门篇之Linux项目自动化构建工具-Make/Makefile的超强使用指南
  2. 1-3:学习shell之Linux系统
  3. Python以进程方式无黑窗在后台运行(无命令窗)
  4. Win7中多账户设置自动登录的图文方法
  5. Python print和pprint两者的区别
  6. 企业安全建设之自动化代码扫描(代码审计)
  7. Dev TextEdit 输入提示
  8. Jedis工具类使用及设置
  9. 虚拟环境安装Scrapy框架
  10. tyvj1467 通向聚会的道路