python中的迭代器与生成器
2011-11-04 21:56
471 查看
迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有点拗口,实际上要想让一个迭代器工作,至少要实现__iter__方法和next方法。很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用、优雅、pythonic。下边是一个例子,从里边你会感受到不用列表而用迭代器的原因。
迭代器是一个对象,而生成器是一个函数,迭代器和生成器是python中两个非常强大的特性,编写程序时你可以不使用生成器达到同样的效果,但是生成器让你的程序更加pythonic。创建生成器非常简单,只要在函数中加入yield语句即可。函数中每次使用yield产生一个值,函数就返回该值,然后停止执行,等待被激活,被激活后继续在原来的位置执行。下边的例子实现了同样的功能:
#!/usr/bin/env python #coding=utf-8 class Fib: def __init__(self): self.a,self.b = 0,1 def next(self): self.a,self.b = self.b,self.a+self.b return self.a def __iter__(self): return self fibs = Fib() for f in fibs: if f < 10000: print f else: break
迭代器是一个对象,而生成器是一个函数,迭代器和生成器是python中两个非常强大的特性,编写程序时你可以不使用生成器达到同样的效果,但是生成器让你的程序更加pythonic。创建生成器非常简单,只要在函数中加入yield语句即可。函数中每次使用yield产生一个值,函数就返回该值,然后停止执行,等待被激活,被激活后继续在原来的位置执行。下边的例子实现了同样的功能:
#!/usr/bin/env python #coding=utf-8 def fib(): a,b = 0,1 while 1: a,b = b,a+b yield a for f in fib(): if f < 10000: print f else: break
相关文章推荐
- Python的生成器和迭代器
- python基础之迭代器和生成器
- Python3学习笔记:迭代器与生成器
- Python 可迭代的对象、迭代器和生成器
- Python----装饰器/生成器/迭代器
- Python菜鸟之路:Python基础-生成器和迭代器、递归
- Python拾遗之迭代器和生成器(二)
- Python学习之--迭代器、生成器
- python3 迭代器与生成器整理12.24
- Python中生成器和迭代器的区别
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- Python迭代器与生成器
- python cookbook第三版学习笔记六:迭代器与生成器
- Python迭代器与生成器(转)
- Python 迭代器 和 生成器yield
- 装饰器、生成器、迭代器、及python中内置函数的使用
- 010 Python语法之二维列表-迭代器生成器
- python中的生成器跟迭代器
- Python 迭代器和生成器
- 铁乐学python_day13_迭代器生成器