标签:
一、迭代器
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退。
1. 迭代器优点
对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式。本质:迭代器就是生成一个有next()方法的对象,而不是通过索引来计数。
不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。这个特点被称为延迟计算或惰性求值(Lazy evaluation)。
提供了一个统一的访问集合的接口,只要定义了__iter__()方法对象,就可以使用迭代器访问。
2. 两个基本的方法
1) next方法:返回迭代器的下一个元素
a = {2,3,4,} b = iter(a) print(b.__next__()) print(b.__next__()) print(b.__next__()) print(b.__next__()) out: 2 3 4 Traceback (most recent call last): File "practice3.py", line 216, in <module> print(b.__next__()) StopIteration
# Ps:从上述例子可以看出,迭代器中元素被访问完毕,如果再次调用__next__方法,会提示StopIteration
2) __iter__方法:返回迭代器对象本身
a = {2,3,4,} b = iter(a) print(b.__iter__()) out: <set_iterator object at 0x0000000000B377E0>
迭代器对象的访问方法,一般为for循环,循环取出可迭代对象中的元素。
二、生成器
生成器是特定的函数,允许你返回一个值,然后“暂停”代码的执行,稍后恢复。生成器使用了“延迟计算”,所以在内存上面更加有效。带有 yield 的函数在 Python 中被称之为 generator,即生成器。
标签:
原文地址:http://www.cnblogs.com/jishuweiwang/p/5592579.html