python 10 迭代器和三元运算符
- 一.迭代器
1.迭代器协议:对象必须提供一种next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,终止迭代
2.可迭代对象:实现了迭代器协议的对象
3.python 的内部工具(for,sum,min,max函数),使用迭代器协议访问对象
- 二 for循环机制
for循环本质:循环所有对象,全部使用迭代器协议
注意1:字典,字符串,列表,元组,集合,文件对象,都不是可迭代对象,for循环时,调用了他们的_iter_方法,将他们转换为可迭代对象
for循环工作:1,调用_iter_方法 2,调用_next_方法 3.捕捉异常
为什么要有for循环:
序列类型 字符串,列表,元组可以使用index访问,但是字典集合,文件对象,不行,for循环一视同仁 ,都是使用迭代器协议
注意2:next()方法,就是在调用迭代器本身的iter_._next_()方法
- 三 三元运算,列表解析,生成器表达式
1.生成器:一种数据类型,自动实现了迭代器协议,不是字典,字符串,列表,元组,集合,文件对象之类的,不需要调用_iter_方法
两种表现形式:①常规函数定义,使用yield语句而不是return语句返回结果. yield语句一次返回一个结果,在每个结果中间,挂起函数状态,下次从它离开的地方继续.

②生成器表达式:
三元表达式
,条件成立返回前面,否则返回后面
列表解析

缺点:当数据过大的时候,所占内存过过大
生成器:
这就是生成器表达式,
比列表解析节省内存.原因:基于迭代器协议,一个个生成对象,
只要使用迭代器协议的函数,就可以使用生成器表达式

- 四 生成器函数好处
1.得到一个值,可以立马进行返回,不用等所有的值都得到
2.节约内存(不用一个容器装起来)
不使用生成器函数的坏处
1.占空间大
2.效率低(函数执行完了,所有的返回值都准备好了才能返回)
python 10 迭代器和三元运算符的更多相关文章
- python学习10—迭代器、三元表达式与生成器
python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...
- Python学习之路——三元运算符推导式
三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # ...
- Python学习杂记_10_三元运算符
常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: ...
- Python day14迭代器,三元表达式,列表解析以及生成器表达式
1.迭代器 str=['sds','ccc','dw'] lit_1=str.__iter__()#获取迭代器 print(lit_1.__next__())#打印下一个值 # 用while做for的 ...
- JS系列:三元运算符与循环
三元运算符 语法: 条件?成立做的事情:不成立做的事情:<=>相当于简单的if/else判断(简化写法) var num = 12; if(num>10){ num ++; }el ...
- python基础——10(三元运算符、匿名函数)
一.三元运算符 本质是if--else--的语法糖 前提:简化if--else--的结构,且两个分支有且只有一条语句 案例: a = 20 b = 30 res = a if a > b els ...
- python学习之基础入门,安装,字符串,数据转换,三元运算符
python基础 我们要开始学习新的编程语言了,加油~~ python是“世界上最好的语言”,学习它当然是认为它是最好的所以我们才学(人生苦短我学python),python运用于不同的领域,采集分析 ...
- Python学习手册之元组拆包、三元运算符和 else 语句深入
在上一篇文章中,我们介绍了 Python 之禅. Python 编程规范和函数参数,现在我们介绍 Python 的元组拆包.三元运算符和对 Python 的 else 语句深入讲解.查看上一篇文章请点 ...
- python三元运算符
在c.php里面,都有三元运算符,如: a = b?c:d 意思是 b 的运算结果如果是True,那么整个表达式a就等于c,反之如果b的运算结果是False,那么a就等于d. 这样写起来简洁又高效 ...
随机推荐
- add-migration Build failed.
>add-migration JczInfoDateTimeBuild failed. 1编译解决方案,看是否报错,不管哪个有错误都会迁移失败 2重启vs
- iis7.5 配置伪静态
1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式: 2)部署好站点,并将此站点的应用程序池设置为nettest; ...
- orcal -对表的操作
设计表 varchar2(n) number(n,m)整数:n-m,小数m DATE 日期 CLOB 大文本 BLOB二进制 创建表=============== create table membe ...
- 移动端常用UI框架
作为一个前端人员来说,总结几款相对来说不错的用于移动端开发的UI框架是非常必要的,以下几种移动端UI框架就能基本满足工作中开发需要,根据项目需求,选用合适的框架搭建项目,更能容易提高开发效率. 一.M ...
- VS C# debug文件夹中各文件的作用
*.exe 生成的可运行exe文件 *.exe.config 它的内容是依据app.config文件生成的,app.config是开发时的配置文档,*.exe.config是程序布署时的配置文件 *. ...
- Windows 2008 R2 域控制器防止意外删除现有OU的设置
Windows 2008 R2 域控制器防止意外删除现有OU(组织单元)的设置:1.以管理员身份运行Active Directory的Windows PowerShell模块: 2.键入以下命令来检查 ...
- myeclipse2017+ssm+tomcat8+jdk1.8
练习上手ssm项目 工具:myeclipse2017,spring4,jdk1.8,tomcat8 搭建链接:https://www.cnblogs.com/cuglkb/p/6734666.html ...
- 不学无术的下场——OO第一单元总结
第一单元OO作业总结 第一次作业 第一次作业的要求是对仅有常数和幂函数的式子进行求导. 由于是第一次接触JAVA,对很多东西都还不熟悉,尤其是正则表达式做得不好.当时我的思路如下: 建立Pol ...
- Word2vec教程
Word2vec Tutorial RADIM ŘEHŮŘEK 2014-02-02GENSIM, PROGRAMMING157 COMMENTS I never got round to writi ...
- java调用webservice方法
由于项目的历史原因,webservice服务端是乙方公司开发的,我们自己开发的系统需要去调用乙方公司的webservice接口.前面用了网上提供的一种方法(非生成代理类),怎么也调用不成功(也许是因为 ...