Python菜鸟之路:Python基础-生成器和迭代器,,一、迭代器  迭代器


一、迭代器

  迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退。

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:234Traceback (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,即生成器。

Python菜鸟之路:Python基础-生成器和迭代器

相关内容

    暂无相关文章

评论关闭