python中的生成器和迭代器
2017-07-26 11:38
423 查看
一、迭代器
可以用于for语句进行循环的对象就是可迭代对象,例如内置数据类型list、dict、tuple、str等。
我们也可以构建自己的迭代器,包含一系列元素,也可以通过for循环取出元素,也可以使用next()方法。使用迭代器的好处是:当数列长度过大时,可以减少内存消耗,因为每次只返回一个值。
二、产生迭代器的三种方法
1. iter()和next()方法
迭代器例子:
生成器
可以通过三种方式得到生成器,一种是yield方法。程序执行到yield后返回值,并暂停,直到下次被访问,从上次暂停的位置开始继续执行。
3.使用内置函数 iter()
利用iter()方法将迭代对象转化为迭代器
可以用于for语句进行循环的对象就是可迭代对象,例如内置数据类型list、dict、tuple、str等。
我们也可以构建自己的迭代器,包含一系列元素,也可以通过for循环取出元素,也可以使用next()方法。使用迭代器的好处是:当数列长度过大时,可以减少内存消耗,因为每次只返回一个值。
二、产生迭代器的三种方法
1. iter()和next()方法
迭代器例子:
class Container(object): def __init__(self, start_num=0, end_num=0): ''' Constructor ''' self.start = start_num self.end = end_num def __iter__(self): print "create an iterator" return self # python2.x用next(),python3.x用__next__() def next(self): print "calling next method" if self.start < self.end: i = self.start self.start += 1 return i else: raise StopIteration() if __name__ == "__main__": c = Container(0, 3) for x in c: print x 输出结果: create an iterator calling next method 0 calling next method 1 calling next method 2 calling next method
生成器
可以通过三种方式得到生成器,一种是yield方法。程序执行到yield后返回值,并暂停,直到下次被访问,从上次暂停的位置开始继续执行。
def generator(start, end): while start < end: yield start start += 1 g = generator(0, 5) print g print next(g) next(g) for x in g: print x 输出结果: <generator object generator at 0x0000000002847A68> 0 2 3 4
3.使用内置函数 iter()
利用iter()方法将迭代对象转化为迭代器
iters = iter([1,2,3]) print iters print next(iters) print next(iters) print next(iters) 输出结果: <listiterator object at 0x00000000027FB4A8> 1 2 3
相关文章推荐
- python的迭代器与生成器实例详解
- python学习之路 七 :生成器、迭代器
- python中的迭代器与生成器
- Python的迭代器和生成器
- python中生成器和迭代器
- Python day5:列表生成式,生成器,迭代器
- Python简单学习(lecture3)编程、条件控制、循环语句、迭代器和生成器
- Python 中迭代器与生成器实例详解
- python 生成器和迭代器
- python 学习生成器和迭代器 8皇后问题
- python迭代器与生成器
- ·python·用生成器和迭代器实现自己的xrange
- python拗口语法点总计1:迭代器、生成器、元组
- python之 可迭代 迭代器 生成器
- 详解Python的迭代器、生成器以及相关的itertools包
- 完全理解 Python 迭代对象、迭代器、生成器
- 深入讲解Python中的迭代器和生成器
- Python迭代器与生成器
- python 生成器 迭代器
- Python可迭代对象、迭代器和生成器