python 迭代器
这里只讨论一个特殊的方法——__iter__,这个方法是迭代器规则的基础
迭代器规则
迭代的意思就是重复做一些事很多次——就像在循环中做的那样。到现在为止只是在for循环中对序列和字典进行迭代,但实际上也能对其他的对象进行迭代:实现__iter__方法的对象。
__iter__方法返回一个迭代器,所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用,但迭代器没有值可以返回,就会引发一个StopIteration异常。
注意:迭代器规则在Python3.0中有一些变化。在新的规则中,迭代器对象应该实现__next__方法,而不是next。而新的内建函数next可以用于访问这个方法。换句话说,next(it)等同于3.0之前版本中的 it.next()
迭代规则的关键是什么?为什么不使用列表?因为列表的杀伤力太大。如果有可以一个接一个地计算值的函数,那么在使用时可能是计算一个值时获取一个值——而不是通过列表一次性获取所有值。如果有很多值,列表就会占用太多的内存。但还有其他理由:使用迭代器更通用、更简单、更优雅。下面看看一个不用列表的例子。
这里的“列表”是一个斐波那契数列。使用迭代器如下:
1 In [37]: class Fibs: 2 ....: def __init__(self): 3 ....: self.a = 0 4 ....: self.b = 1 5 ....: def next(self): 6 ....: self.a, self.b = self.b, self.a+self.b 7 ....: return self.a 8 ....: def __iter__(self): 9 ....: return self10 ....:
注意,迭代器实现了__iter__方法,这个方法实际上返回迭代器本身。在很多情况下,__iter__会放到其他的会在for循环中使用的对象中。这样一来,程序就能返回所需的迭代器。此外,推荐使迭代器实现它自己的__iter__方法,然后就能直接在for循环中使用迭代其本身了。
注意:正式的说法是,一个实现了__iter__方法的对象是可迭代的,一个实现了next方法的对象则是迭代器。
1 In [38]: fibs = Fibs() 2 3 In [39]: for i in fibs: 4 ....: if i < 100: 5 ....: print i 6 ....: 7 1 8 1 9 210 311 512 813 1314 2115 3416 5517 89
转载于:https://www.cnblogs.com/skyhacker/archive/2012/02/02/2336382.html
python 迭代器相关推荐
- python迭代器生成器 学会再缩短一半开发效率 看看大牛是怎么写的
一.迭代 什么叫做迭代? 比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素,在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历 ...
- 简单介绍python迭代器和生成器
这篇文章主要介绍了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以参考下,希望能够给你带来帮助 python迭代器和生成器 1.迭代器 这里用字典示例 while T ...
- python迭代器使用_python迭代器的使用方法实例
什么是迭代器?迭代器是带有next方法的简单对象,当然也要实现__iter__函数.迭代器能在一序列的值上进行迭代,当没有可供迭代时,next方法就会引发StopIteration 的异常.pytho ...
- python生成器 图片分类_python批量处理图片图片Python迭代器和生成器介绍
Python迭代器和生成器介绍迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration ...
- python迭代器与生成器答案_史上最全 Python 迭代器与生成器
原标题:史上最全 Python 迭代器与生成器 作者:浪子燕青 链接:http://www.langzi.fun/迭代器与生成器.html 迭代器与可迭代对象 概念 迭代器:是访问数据集合内元素的一种 ...
- Python 迭代器和 C++ 迭代器,最大的不同竟然是......
作者 | 樱雨楼 责编 | 胡巍巍 前言 迭代器(Iterator)是 Python 以及其他各种编程语言中的一个非常常见且重要,但又充满着神秘感的概念.无论是 Python 的基础内置函数,还是各类 ...
- [转载] python迭代器
参考链接: Python迭代器 迭代器 迭代器是一个可以记住遍历的位置的对象. 迭代器有两个基本的方法:iter() 和 next(). 使用对象内置的__iter__()方法生成迭代器 it = n ...
- python迭代器_Python迭代器
python迭代器 Good day learners! In our previous tutorial, we learned about Python Operator Overloading. ...
- python迭代器的设计
2019独角兽企业重金招聘Python工程师标准>>> python迭代器的设计 跟黄哥学python编程系列文章之迭代器 如何自定义迭代器,有2个必要条件 1.自定义类有一个方法_ ...
- 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器
前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就 ...
最新文章
- 液态大脑与固态大脑——圣塔菲最新群体智能文集
- linux中deb怎样安装
- cad中lisp文件给恶作剧_CAD中LISP程序使用方法
- zeromq+python安装手册
- E20180404-ts
- HAProxy安装与配置(一)
- C语言之数组为参数传递表示指针(三十七)
- 深度学习之RNN、LSTM及正向反向传播原理
- plsqldev连接远程oracle
- 2022国产GIS软件排名
- 《未来世界的幸存者》:你会是未来世界的幸存者吗?
- 哈希(散列)函数的一些应用
- stacey矩阵 敏捷_通过矩阵镜头实现敏捷
- 计算机数据库基础知识填空题,数据库练习题(基础)
- mezzanine timezone 的问题
- java解决 No enclosing instance of type XXX is accessible的问题
- 微信h5分享图标没有展示
- MATLAB 线性插补缺省值
- C++求1000以内水仙花数
- BPDU Gard / BPDU Filter / Root Guard
热门文章
- 中小企业网站建设不妨试试快速建站
- 网站品牌词指数提升的四大方法
- php周计划表_PHP学习计划书
- 4固定在底部_自建房不搭彩钢棚,4根钢结构撑个玻璃棚遮风挡雨,上面多个露台...
- 如何完美隐藏Disposable的存储和销毁过程(一)
- 通过apt自动生成建造者模式单线程版代码(一)
- 开发日记-20190807 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 21
- lucene DocValues——没有看懂
- k8s object对象(pod controller)介绍
- Xcode:Task failed with exit 1 signal 0 {