码迷,mamicode.com
首页 > 编程语言 > 详细

python 10 迭代器和三元运算符

时间:2018-12-07 01:32:50      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:bsp   一个个   需要   分享图片   访问   pytho   http   表达   返回   

  • 一.迭代器

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 迭代器和三元运算符

标签:bsp   一个个   需要   分享图片   访问   pytho   http   表达   返回   

原文地址:https://www.cnblogs.com/MrYangjlPython/p/10080634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!