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

Posted 程序员改变了世界、妹子改变了程序员!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:
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,即生成器。

 

以上是关于Python菜鸟之路:Python基础-生成器和迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Python菜鸟之路一:Python基础

菜鸟的Python之路--基础知识

菜鸟的Python之路--基础知识(列表的基本操作)

Python菜鸟之路一:Python基础-内置函数补充

我的python菜鸟之路16

我的python菜鸟之路1