三元表达式

在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子

if x > y:print("the max is x")
else:print("the max is y")

三元表达式的语法为:

True if expression else False

现在可以个体三元表达式来完成这种比较简单的判断

res = x if x > y else y
print(res)

列表解析

列表解析的语法格式为

[ i操作 for i in 列表 if 表达式1 and 表达式2]
  • 其中if判断语句是可选语句,可以对列表的元素进行操作

现在有这样一个需求,把一个数字列表中的每个值都取平方,把一个列表中的每个字符串都转换为大写形式

可以这样写

l1 = range(1, 10, 2)
l2 = []
for i in l1:l2.append(i**2)l3 = ['python', 'linux', 'javascript', 'mysql']
l4 = []
for j in l3:j = j.upper()l4.append(j)print(l2)
print(l4)

那有没有简单的方式呢,可以使用列表解析,上面的例子则可以修改为

l1 = range(1, 10, 2)
l2 = [i**2 for i in l1]l3 = ['python', 'linux', 'javascript', 'mysql']
l4 = [j.upper() for j in l3]print(l2)
print(l4)

生成器表达式

列表解析得到的结果仍然是一个列表,列表解析的优点是:取值方便
缺点:很占系统资源,如果列表的长度较小时使用列表解析会很方便,但是如果列表的长度很大的时候,使用列表解析会占用很多的内存资源,此时可以使用生成器表达式来节省内存资源
来看下面的例子

res = ( i**2 for i in range(100))
print(res)

得到的结果为

<generator object <genexpr> at 0x0000000002DA1AF0>

在上面的例子里,把列表解析表达式中的中括号换成小括号,那么表达式执行结果就变成了一个生成器

我们知道,生成器的本质就是迭代器,所以上面的表达式执行的结果生成器,可以使用for 循环来取值

res = ( i**2 for i in range(100))for i in res:print(i)

转载于:https://www.cnblogs.com/renpingsheng/p/8641989.html

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

  1. python天天向上代码解析-python列表解析和生成器表达式

    列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iter ...

  2. 列表解析和生成器表达式

    列表解析(List comprehensions,或者缩略为list comps)来自函数式编程语言Haskell,可以用来动态创建列表. [expr for iter_var in iterable ...

  3. Python基础-----三元表达式、列表解析、生成器表达式

    三元表达式: 变量 = 值1 if 条件为真 else 值2 类似于: res = '对了' if 1 > 2 else '错了' print(res) >>> '错了' 普通 ...

  4. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  5. 三元表达式 列表递推 生成器表达式

    #!/use/bin/python# -*- conding:utf-8 -*- # def my_max(x,y):# if x >= y : #>=必须紧凑# return x# el ...

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

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

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

    三元表达式 列表解析 生成器表达式 三元表达式 在作简单的判断时,三元表达式能简化代码: def max(x, y):if x > y:return xelse:return y # 这个函数可 ...

  8. python列表解析,生成表达式(一分钟读懂)

    如果想通过操作和处理一个序列来创建一个新的列表时,可以使用列表解析和生成表达式 区分就是 [ ] ( ) 1.列表解析 list comprehensions 2.生成表达式 a = [ i for ...

  9. python关键字列表的表达式,python 列表推导和生成器表达式的使用

    序列 序列是指一组数据,按存放类型分为容器序列与扁平序列,按能否被修改分为不可变序列与可变序列. 容器序列与扁平序列 容器序列存放的是对象的引用,包括list.tuple.collections.de ...

最新文章

  1. 解题报告:Fake Maxpooling(单调队列求矩阵的和)
  2. 8.2 高斯分布模型-机器学习笔记-斯坦福吴恩达教授
  3. keras 张量切片
  4. hdu1181变形课dfs/bfs/并查集三种解法(java)
  5. 设计数据密集型应用程序_设计数据密集型应用程序书评
  6. 终于等到放学了的飞鸽传书
  7. python朴素贝叶斯分类MNIST数据集
  8. 蚂蚁金服一面二面试题及答案,职位Java高级工程师
  9. 笔记本cpu排名_2020年双十一哪一款笔记本电脑值得买?高性价比笔记本电脑推荐(10月更新)...
  10. 哪位有Castle Project Generators,邮给我一份 (deerchao at gmail dot com),谢谢。
  11. c#程序设计语言杜松江版_C#程序设计语言复习题(试题及答案版)
  12. JQuery插件Fullpage说明文档
  13. 模型设置(1)——边界条件
  14. 系统架构设计方法论——IBM架构解决方案设计
  15. 7-6,输入厘米,输出英尺英寸
  16. 性能工具之Java分析工具BTrace入门
  17. 最新QQ辅助任务平台悬赏接单源码+支持商家等功能
  18. JAVA——多线程【线程终止、中断、插队】
  19. 《红海行动》之黑天鹅事件
  20. 这个表是怎么回事??? [问题点数:50分] 收藏

热门文章

  1. python 获取json中最大值_详细解析 Python 爬取 bilibili 的视频、弹幕以及封面
  2. linux 没有权限登录,CentOS中让一个用户没有登录权限
  3. libcrypto yum 安装_YUM 安装 VSFTP出错
  4. 【算法竞赛学习】心跳信号分类预测-数据分析
  5. 计算机网络期末复习提纲
  6. 数据结构--栈(附上STL栈)
  7. springboot 之 webscoket 服务端推送
  8. Linux16.04配置CUDA8.0+CUDNNV5.1
  9. [开源]基于姿态估计的运动计数APP开发(二)
  10. 《TCP/IP详解》笔记----第二章 链路层