python 10 迭代器和三元运算符

Posted mryangjlpython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 3三元运算符

Python-三元运算符和lambda表达式

Python随心记--三元运算

For循环中的三元运算符导致无限迭代

Python:拥有三元运算符的有效方法[重复]