• 一.迭代器

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. javascript 数组的简单应用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. opencv常用api

    opencv常用api 一.图像及视频读写 img=cv2.imread('jiang.jpg',1)    cv2.imwrite('jiang.jpg',img)   cv2.imshow('ji ...

  3. jquery调用iframe里面的方法

    $(window.parent.document).contents().find("#iframename")[0].contentWindow.iframefunction() ...

  4. idea 设置光标回到上一次位置的快捷键

    1. file-->settings,搜索 navigate 这个 蓝色的back和forward分别就是光标后退.前进的快捷键了,全部移除原来冲突的快捷键,然后重新设置成自己的快捷键即可. 然 ...

  5. Unix shell范例精解 课后题

    1.read  #屏幕输入read name  #输入名字 2.echo #在终端打印出内容echo "What is your name ?"  # What is your n ...

  6. 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介

    平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...

  7. Arthas的基础学习

    下载与安装 wget https://alibaba.github.io/arthas/arthas-boot.jar java -jar arthas-boot.jar 启动 查看启动的帮助信息: ...

  8. 【转】未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    “/xxxxx”应用程序中的服务器错误. ------------------------------------------------------------------------------- ...

  9. C语言作业04-数组

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了几种用于循环的语句,能够利用循环解决复杂的问题,但对于几种循环的使用并不熟练,其中对于c ...

  10. 随select动,将value值显示在后面的input里

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...