Python入门 推导式 ! 解释:生成器表达式和列表推导式的区别
Python 入门之 推导式
学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!
推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式
1、推导式
(1)列表推导式 :
<1> 普通循环: [变量 for循环]
print([i for i in range(10)])
<2> 筛选模式:[加工后的变量 for循环 加工条件]
print([i for i in range(10) if i % 2 ==0])
(2)集合推导式 :
<1> 普通循环: {变量 for循环}
print({i for i in range(10)})
<2> 筛选模式:{加工后的变量 for循环 加工条件}
print({i for i in range(10) if i % 2 == 1})
(3)字典推导式 :
<1> 普通循环: {键:值 for循环}
print({i: i+1 for i in range(10)})
<2> 筛选:{加工后的键:值 for循环 加工条件}
print({i: i+1 for i in range(10) if i % 2 == 0})
(4)生成器推导式 :
<1> 普通循环:(变量 for循环)
tu = (i for i in range(10))
<2> 筛选:(加工后的变量 for循环 加工条件)
# tu = (i for i in range(10) if i > 5)
数据类型 (pyhton3: range() | python2 :xrange()) 都是可迭代对象 iter()
文件句柄是迭代器 iter() next()
2、生成器表达式和列表推导式的区别:
(1)列表推导式比较耗内存,所有数据一次性加载到内存。而生成器表达式遵循迭代器协议,逐个产生元素。
(2)得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器
(3)列表推导式一目了然,生成器表达式只是一个内存地址。
无论是生成器表达式,还是列表推导式,都只是Python提供的一个相对简单的构造方式,因为使用推导式非常简单,所以大多数都会为之着迷,这个一定要慎重,推导式只能构建相对复杂的并且有规律的对象,对于没有什么规律,而且嵌套层数比较多(for循环超过三层)这样就不建议使用推导式构建。
生成器的惰性机制: 生成器只有在访问的时候才取值,说白了.你找他要才给你值.不找他要.他是不会执行的.
Python入门 推导式 ! 解释:生成器表达式和列表推导式的区别相关推荐
- 函数生成器、生成器表达式,列表推导式
目录 一.生成器 ⼆.列表推导式,⽣成器表达式以及其他推导式 三.字典推导式 四.集合推导式 一.生成器 ⼀.⽣成器什么是⽣成器.⽣成器实质就是迭代器. def fun():print('111')r ...
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
一.三元表达式 语法:[成立1 if condition1 else成立2 if condition2 else ...if 成立N conditionN else 不成立] sex = 'man' ...
- Python 三元表达式、列表推导式、生成器表达式
一.三元表达式 三元表达式,也称为if,else的紧凑形式.具体用法如下: def max(a,b):if a>b:return aelse:return bdef max(a,b):retur ...
- 生成器、生成器函数、推导式、生成器表达式
一.生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(),send():给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创建 其实就是 ...
- mysql数据字典生成器_「python技术」列表推导、生成器表达式和字典推导的差异及其示例
#开往春天新创作大赛# 前言 列表推导式构建列表的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.自python2.7以后,列表推导和生成器表达式的概念就应用到了字典上,所以就有了字典推导, ...
- 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数
一.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 二.列表推导式和生成器表达式 #老 ...
- 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数(day4)
一.三元表达式.列表推导式.生成器表达式 1.三元表达式name=input('姓名>>: ')res='SB' if name == 'alex' else 'NB'print(res) ...
- python列表推导式生成随机数_Python:列表推导式/生成器推导式
一,列表推导式和生成器表达式 l = [i for i in range(10)] print(l) l1 = ['选项%s'%i for i in range(10)] print(l1) 1.把列 ...
- 生成器,生成器表达式及各种推导式
生成器 什么是生成器?⽣成器实质就是迭代器. 在python中有三种⽅式来获取⽣成器: 通过⽣成器函数 通过各种推导式来实现⽣成器 通过数据的转换也可以获取⽣成器 ⾸先, 我们先看⼀个很简单的函数: ...
最新文章
- 网络工程师中级2018 2019 2004-2017年真题+答案【结构介绍】
- java是什么 需要学什么_Java是什么,Java需要学习哪些内容?如何自学Java?
- spark on yarn参数: 任务优先级
- linux sublime nodejs,Windows环境下sublime的Nodejs插件详细安装图解
- libsvm与python的使用
- 如何解决 SQL Server 安装程序中的 COM+ 系统配置检查失败问题
- Sentinel(八)之熔断降级
- Java EE + MongoDb与Apache TomEE和Jongo Starter项目
- SVN的安装配置(一)
- java鸟和翅膀组合关系怎么写_关联、聚合、组合和依赖之间区别
- 事后分析报告(M2阶段)
- springboot session超时设置_Spring Boot+Spring Security:获取用户信息和session并发控制...
- python学习——格拉布斯准则实现
- PCL提取点云的边界
- 新手小坑:sql表int字段自动填0
- 分享我见到的培训面试和就业的情况(同时给出建议)
- activiti中关于历史数据的表
- 微服务架构-ruoyi
- [转]步入成熟的无线视频应用 英特尔WiDi无线视频传输研究
- 就您所知,它只是一个Java库