• 一.迭代器

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 迭代器和三元运算符的更多相关文章

  1. python学习10—迭代器、三元表达式与生成器

    python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...

  2. Python学习之路——三元运算符推导式

    三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # ...

  3. Python学习杂记_10_三元运算符

    常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: ...

  4. Python day14迭代器,三元表达式,列表解析以及生成器表达式

    1.迭代器 str=['sds','ccc','dw'] lit_1=str.__iter__()#获取迭代器 print(lit_1.__next__())#打印下一个值 # 用while做for的 ...

  5. JS系列:三元运算符与循环

     三元运算符 语法: 条件?成立做的事情:不成立做的事情:<=>相当于简单的if/else判断(简化写法) var num = 12; if(num>10){ num ++; }el ...

  6. python基础——10(三元运算符、匿名函数)

    一.三元运算符 本质是if--else--的语法糖 前提:简化if--else--的结构,且两个分支有且只有一条语句 案例: a = 20 b = 30 res = a if a > b els ...

  7. python学习之基础入门,安装,字符串,数据转换,三元运算符

    python基础 我们要开始学习新的编程语言了,加油~~ python是“世界上最好的语言”,学习它当然是认为它是最好的所以我们才学(人生苦短我学python),python运用于不同的领域,采集分析 ...

  8. Python学习手册之元组拆包、三元运算符和 else 语句深入

    在上一篇文章中,我们介绍了 Python 之禅. Python 编程规范和函数参数,现在我们介绍 Python 的元组拆包.三元运算符和对 Python 的 else 语句深入讲解.查看上一篇文章请点 ...

  9. python三元运算符

    在c.php里面,都有三元运算符,如:   a = b?c:d 意思是 b 的运算结果如果是True,那么整个表达式a就等于c,反之如果b的运算结果是False,那么a就等于d. 这样写起来简洁又高效 ...

随机推荐

  1. @Override is not allowed when implementing interface method

    使用idea导入maven项目时 会出现如下报错 @Override从jdk1.5开始出现的,是用来标注方法重写:通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法: @Overri ...

  2. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)

    1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的 ...

  3. java idea 代码规范插件

    推荐阿里的 p3c https://github.com/alibaba/p3c

  4. python_14 多态,封装

    多态: 由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同. 多态的概念指出了对象如何通过他们的共同的属性和动作来操作及访问,而不需考虑他们的类. class H2O: def __init_ ...

  5. cookies相关概念

    1.什么是Cookie Cookie实际上是一小段的文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存 ...

  6. [Flutter] lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.dart'.

    lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.dart'. import ...

  7. 使用IDEA的项目上传到GitHub

    使用IDEA的项目上传到GitHub 前提条件: 1.配置好Git(https://jingyan.baidu.com/article/8275fc867b652046a03cf613.html) 2 ...

  8. 修改jupyter notebook主题、字体和启动路径

    目录 1.安装主题 2.切换 3.字体 4.启动路径 1.安装主题 window在cmd中输入 pip install --upgrade jupyterthemes 完成后输入查看 jt -l 就提 ...

  9. Install Oracle Database client in silent mode

    下面通过在工作中的使用,总结出不同版本Oracle client的静默(silent)安装方法. Oracle Database client 12.2.0.1 1. reponse file con ...

  10. <Dare To Dream>团队项目用户验收评审

    实验十二 团队作业8—团队项目用户验收评审 任务1:团队作业Beta冲刺 Beta冲刺第一天:http://www.cnblogs.com/Dare-To-Dream/p/9226994.html B ...