三元表达式,列表解析和生成器表达式
三元表达式
在以前,在诸如比较两个数大小的时候,通常的写法都是下面的样子
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
三元表达式,列表解析和生成器表达式相关推荐
- python天天向上代码解析-python列表解析和生成器表达式
列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iter ...
- 列表解析和生成器表达式
列表解析(List comprehensions,或者缩略为list comps)来自函数式编程语言Haskell,可以用来动态创建列表. [expr for iter_var in iterable ...
- Python基础-----三元表达式、列表解析、生成器表达式
三元表达式: 变量 = 值1 if 条件为真 else 值2 类似于: res = '对了' if 1 > 2 else '错了' print(res) >>> '错了' 普通 ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- 三元表达式 列表递推 生成器表达式
#!/use/bin/python# -*- conding:utf-8 -*- # def my_max(x,y):# if x >= y : #>=必须紧凑# return x# el ...
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...
- 三元表达式列表解析生成器表达式
三元表达式 列表解析 生成器表达式 三元表达式 在作简单的判断时,三元表达式能简化代码: def max(x, y):if x > y:return xelse:return y # 这个函数可 ...
- python列表解析,生成表达式(一分钟读懂)
如果想通过操作和处理一个序列来创建一个新的列表时,可以使用列表解析和生成表达式 区分就是 [ ] ( ) 1.列表解析 list comprehensions 2.生成表达式 a = [ i for ...
- python关键字列表的表达式,python 列表推导和生成器表达式的使用
序列 序列是指一组数据,按存放类型分为容器序列与扁平序列,按能否被修改分为不可变序列与可变序列. 容器序列与扁平序列 容器序列存放的是对象的引用,包括list.tuple.collections.de ...
最新文章
- 解题报告:Fake Maxpooling(单调队列求矩阵的和)
- 8.2 高斯分布模型-机器学习笔记-斯坦福吴恩达教授
- keras 张量切片
- hdu1181变形课dfs/bfs/并查集三种解法(java)
- 设计数据密集型应用程序_设计数据密集型应用程序书评
- 终于等到放学了的飞鸽传书
- python朴素贝叶斯分类MNIST数据集
- 蚂蚁金服一面二面试题及答案,职位Java高级工程师
- 笔记本cpu排名_2020年双十一哪一款笔记本电脑值得买?高性价比笔记本电脑推荐(10月更新)...
- 哪位有Castle Project Generators,邮给我一份 (deerchao at gmail dot com),谢谢。
- c#程序设计语言杜松江版_C#程序设计语言复习题(试题及答案版)
- JQuery插件Fullpage说明文档
- 模型设置(1)——边界条件
- 系统架构设计方法论——IBM架构解决方案设计
- 7-6,输入厘米,输出英尺英寸
- 性能工具之Java分析工具BTrace入门
- 最新QQ辅助任务平台悬赏接单源码+支持商家等功能
- JAVA——多线程【线程终止、中断、插队】
- 《红海行动》之黑天鹅事件
- 这个表是怎么回事??? [问题点数:50分] 收藏
热门文章
- python 获取json中最大值_详细解析 Python 爬取 bilibili 的视频、弹幕以及封面
- linux 没有权限登录,CentOS中让一个用户没有登录权限
- libcrypto yum 安装_YUM 安装 VSFTP出错
- 【算法竞赛学习】心跳信号分类预测-数据分析
- 计算机网络期末复习提纲
- 数据结构--栈(附上STL栈)
- springboot 之 webscoket 服务端推送
- Linux16.04配置CUDA8.0+CUDNNV5.1
- [开源]基于姿态估计的运动计数APP开发(二)
- 《TCP/IP详解》笔记----第二章 链路层