1. 迭代器协议:

对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)。

2. 可迭代对象:

实现了迭代器协议的对象(即对象内部定义了一个__iter__)。

python的内部工具(如for循环、sum、min、max函数等)通过迭代器协议来实现对象的访问。

 1 s = [1,2,3,4]2 iter_s = s.__iter__()     #或iter(s),遵循迭代器协议,生成可迭代对象,其中try用于异常捕捉3 print(iter_s.__next__())    #或next(iter_s),按照迭代器提供的next方法依次访问列表中各元素4 print(iter_s.__next__())5 print(iter_s.__next__())6 print(iter_s.__next__())7 8 """9 运行结果:
10     1
11     2
12     3
13     4
14 """

字符串、列表、元组、字典、集合、文件等本身都不是迭代对象,只是在for循环时,调用了它们内部的__iter__方法,将其变成了可迭代对象。

3. 用while模拟for循环内部原理

 1 s = [1,2,3,4]2 iter_s = s.__iter__()3 while True:4     try:5         print(iter_s.__next__())6     except StopIteration: 7 print("迭代完毕,循环终止") 8 break 9 10 """ 11 运行结果: 12 1 13 2 14 3 15 4 16 迭代完毕,循环终止 17 """

转载于:https://www.cnblogs.com/zizaijiapu/p/10590245.html

day04.2-迭代器相关推荐

  1. day04 迭代器生成器装饰器

    目录   1.迭代器 2.生成器 3.推导式 4.匿名函数 5.内置函数 6.递归 7.闭包 8.装饰器 一.迭代器 特点: 1. 省内存 2. 只能向前. 不能反复 3. 惰性机制 让不同的数据类型 ...

  2. Java笔记05-Collection、泛型、迭代器

    Java笔记05-Collection.泛型.迭代器 [Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 ...

  3. day04 【Map】

    day04 [Map] 主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用"键找值"的方式遍历Map集合 使用"键值对" ...

  4. 完全理解Python迭代对象、迭代器、生成器

    本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...

  5. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器

    目录 iterator迭代器 使用迭代器遍历集合 iterator迭代器 scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合 使用迭代器遍历集合 使用iterator方法可 ...

  6. python3 内置函数map 返回的迭代器转为列表

    python3 内置函数map 返回的是迭代器,python2 返回的才是列表, 在python3中想要使用需要把迭代器在转换成列表 list_a = [1, 2, 3, 4, 5]def add(n ...

  7. 生成器、迭代器的区别?

    迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...

  8. python基础(迭代器,生成器,装饰器)

    python: 生成器: 因为当列表元素达到一定上限,列表会占很大内存空间来存储,所以列表是受到内存限制的来适当使用. 生成器可以按照一个算法,循环推导出元素,就不用一次生成整个列表,而通过生成器(g ...

  9. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  10. Python 列表和迭代器区别

    列表不论遍历多少次,表头位置始终是第一个元素: 迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置. 通过 type 关键字可以看到列表和迭代器的类型是不同的. In [1]: a ...

最新文章

  1. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...
  2. Unix Domain Socket 域套接字实现
  3. yolov5 多版本共存
  4. 从向量的角度理解皮尔逊相关系数
  5. 【实例图文详解】OAuth 2.0 for Web Server Applications
  6. PyCairo 中的文本
  7. aspen共沸精馏如何模拟_9月1011号Aspen plus:精馏精品培训!线上线下同时开展!另有惊喜活动等你参与!...
  8. Servlet异步处理性能优化的过程
  9. 对servelet路径的总结
  10. Jenkins进阶系列之——08Jenkins纳入版本控制
  11. 数字孪生智慧城市建设解决方案
  12. VS2008安装错误,解决方案
  13. 百度首页代码(HTML+CSS+jQuery)
  14. 第十五周项目一----哈希表的运算及实现
  15. 【转】在 26 岁时写给 18 岁的自己--Livid
  16. 2021.03.12——学习公司项目
  17. 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全...
  18. mysql强制杀进程_mysql 杀掉(kill) lock进程脚本
  19. 一度智信:环环相扣,拼多多“普惠”是行动的底色
  20. java计算机毕业设计居家养老系统源码+mysql数据库+系统+lw文档+部署

热门文章

  1. matlabpython建模_参加数学建模用 MATLAB,还是 Python?
  2. mfc 学习的第三天
  3. 你为什么选择计算机应用专业,致新生!我为什么选择信息工程系
  4. 端到端测试 VS 单元测试
  5. 挖矿为什么要用显卡_你知道为什么挖矿用显卡,而不用CPU吗?
  6. 用纯JSP实现按条件查询数据库
  7. C++ main函数中参数argc和argv相关定义与研究
  8. 使用GDAL获取HDF等数据集中的图像
  9. 在控制台环境下调用MFC DLL崩溃的问题小结
  10. 快速制图插件更新说明2018-05-09