Python中的迭代器和生成器
来源:互联网 发布:韩国ins社交软件 编辑:程序博客网 时间:2024/05/22 04:32
Python中的迭代器是非常实用的,但是迭代器只能应用在类序列对象上,比如列表、元组和字典。除非生成迭代器的类,否则无法在非类序列对象上调用next()方法。
自己可以定义迭代器的类,只要满足:
1. 类定义中有next()方法
2. 类提供能返回迭代器实例的__iter__()方法
Code example:
class MyIterate(object):
def __init__(self,step):
self.step = step
def next(self):
if self.step<=0:
raise StopIteration
self.step -= 1
return self.step
def __iter__(self):
return self
为使调用函数可以像类序列那样使用next()方法,python2.3引入生成器概念。生成器的定义是:带有yield语句的函数。一般的函数在一次调用过程中只会返回一次,但是yield语句的引入使得生成器对象(函数)能够暂停执行并返回中间结果;当next()方法再次被调用的时候,生成器会从中断的地方继续执行下去。
下面结合代码讲解生成器的使用:
>>> def counter(start=0):
... count = start
... while True:
... reset = (yield count)
... if reset is not None:
... count = reset
... else:
... count += 1
>>> count = counter(0) #调用函数生成生成器对象,然后才能调用 next() 方法
>>> count.next()
0
>>> count.next()
1
>>> count.next()
2
>>> count.send(7)
7
>>> count.next()
8
>>> count.close()
>>>
对于上面的代码,每次给 count 对象调用 next() 方法都会返回 count 的值;if 语句则判定是否需要重置 count 。如果没有调用 send 方法,(yield count) 的返回给 reset 的值为 None,从而 count 执行加一操作;如果调用 send 方法,则 (yield count) 的返回给 reset 的值为 send 方法的参数,从而完成重置操作。
代码中的生成器一直在运行,最后调用 close 方法来使代码停止。
- python中的生成器和迭代器
- python中的迭代器和生成器
- Python中的迭代器和生成器
- python中的生成器和迭代器
- python中的生成器和迭代器
- python中的迭代器和生成器
- python中的迭代器和生成器
- python中的迭代器和生成器学习
- 深入讲解Python中的迭代器和生成器
- python迭代器和生成器
- Python 迭代器和生成器
- Python 迭代器和生成器
- Python迭代器和生成器
- Python迭代器和生成器
- python迭代器和生成器
- Python迭代器和生成器
- python迭代器和生成器
- python 迭代器和生成器
- 剑指offer面试题21-包含min函数的栈
- JAVA中tostring方法的作用
- Linux时间子系统之(四):timekeeping
- HDU2098 分拆素数和
- Android ViewPager使用详解
- Python中的迭代器和生成器
- SQL-Oracle游标
- mfc中文件与文件夹的复制与删除
- powerDesigner反向工程,连接报错的解决方法
- CSS3 动画:水平翻转
- 机器 学习入门 知识
- android中volley框架源码解析
- Mysql Cluster水平扩展-添加数据节点
- 修改linux文件权限命令:chmod