python之迭代器和生成器
2015-05-26 11:03
363 查看
迭代器
根本上说, 迭代器就是有一个 next() 方法的对象
迭代器可用内建的iter方法创建
对类可用__iter__和next()创建迭代器
生成器
生成器是可以迭代的,但是只可以读取它一次
yield
2015-05-26
根本上说, 迭代器就是有一个 next() 方法的对象
迭代器可用内建的iter方法创建
>>> i = iter('abc') >>> i.next() 'a' >>> i.next() 'b' >>> i.next() 'c'
对类可用__iter__和next()创建迭代器
class Fib(object): def __init__(self): self.a, self.b = 0, 1 # 初始化两个计数器a,b def __iter__(self): return self # 实例本身就是迭代对象,故返回自己 def next(self): self.a, self.b = self.b, self.a + self.b # 计算下一个值 if self.a > 100000: # 退出循环的条件 raise StopIteration(); return self.a # 返回下一个值 for n in Fib(): print n ------------------------------- 1 1 2 3 5 ... 46368 75025
生成器
生成器是可以迭代的,但是只可以读取它一次
>>> g = (x*x for x in range(3)) >>> for i in gt : ... print(i) 0 1 4 >>> for i in g : ... print(i)
yield
#当你调用这个函数的时候,函数内部的代码并不立马执行, 这个函数只是返回一个生成器对象 def createGenerator(): mylist = range(3) for i in mylist: yield i*i >>> for i in mygenerator: print i 0 1 4 >>> for i in mygenerator: #也是只可调用一次 print i
2015-05-26
相关文章推荐
- python迭代器和生成器
- 装饰器、生成器、迭代器、及python中内置函数的使用
- 010 Python语法之二维列表-迭代器生成器
- ·python·用生成器和迭代器实现自己的xrange
- Python迭代器/生成器
- Python的生成器和迭代器
- python 装饰器 上下文管理器 迭代器 生成器 描述符
- Python迭代器和生成器介绍
- python迭代器和生成器
- python 迭代器与生成器 详解
- Python3学习笔记:迭代器与生成器
- Python 可迭代的对象、迭代器和生成器
- Python的高级特性2:列表推导式,生成器与迭代器
- python--迭代器和生成器
- Python拾遗之迭代器和生成器(二)
- Python学习之--迭代器、生成器
- [python自学笔记]生成器、迭代器、装饰器
- Python中生成器和迭代器的区别
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
- python学习之路 七 :生成器、迭代器