day04.2-迭代器
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-迭代器相关推荐
- day04 迭代器生成器装饰器
目录 1.迭代器 2.生成器 3.推导式 4.匿名函数 5.内置函数 6.递归 7.闭包 8.装饰器 一.迭代器 特点: 1. 省内存 2. 只能向前. 不能反复 3. 惰性机制 让不同的数据类型 ...
- Java笔记05-Collection、泛型、迭代器
Java笔记05-Collection.泛型.迭代器 [Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 ...
- day04 【Map】
day04 [Map] 主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用"键找值"的方式遍历Map集合 使用"键值对" ...
- 完全理解Python迭代对象、迭代器、生成器
本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...
- 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
目录 iterator迭代器 使用迭代器遍历集合 iterator迭代器 scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合 使用迭代器遍历集合 使用iterator方法可 ...
- python3 内置函数map 返回的迭代器转为列表
python3 内置函数map 返回的是迭代器,python2 返回的才是列表, 在python3中想要使用需要把迭代器在转换成列表 list_a = [1, 2, 3, 4, 5]def add(n ...
- 生成器、迭代器的区别?
迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...
- python基础(迭代器,生成器,装饰器)
python: 生成器: 因为当列表元素达到一定上限,列表会占很大内存空间来存储,所以列表是受到内存限制的来适当使用. 生成器可以按照一个算法,循环推导出元素,就不用一次生成整个列表,而通过生成器(g ...
- C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...
- Python 列表和迭代器区别
列表不论遍历多少次,表头位置始终是第一个元素: 迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置. 通过 type 关键字可以看到列表和迭代器的类型是不同的. In [1]: a ...
最新文章
- 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...
- Unix Domain Socket 域套接字实现
- yolov5 多版本共存
- 从向量的角度理解皮尔逊相关系数
- 【实例图文详解】OAuth 2.0 for Web Server Applications
- PyCairo 中的文本
- aspen共沸精馏如何模拟_9月1011号Aspen plus:精馏精品培训!线上线下同时开展!另有惊喜活动等你参与!...
- Servlet异步处理性能优化的过程
- 对servelet路径的总结
- Jenkins进阶系列之——08Jenkins纳入版本控制
- 数字孪生智慧城市建设解决方案
- VS2008安装错误,解决方案
- 百度首页代码(HTML+CSS+jQuery)
- 第十五周项目一----哈希表的运算及实现
- 【转】在 26 岁时写给 18 岁的自己--Livid
- 2021.03.12——学习公司项目
- 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全...
- mysql强制杀进程_mysql 杀掉(kill) lock进程脚本
- 一度智信:环环相扣,拼多多“普惠”是行动的底色
- java计算机毕业设计居家养老系统源码+mysql数据库+系统+lw文档+部署