Python生成器

发布时间:2022-03-21 09:50:27 人气:274 作者:多测师

  1. 什么是可迭代对象?

  可迭代对象,英文Iterable,是一个形容词,这类对象和Java语言类似,都可看作是一类接口,抽象地描述事物具备怎样的能力。所以,Iterable自然具备可迭代能力。

  如下,常见的list,Iterator等都是Iterable对象:

  In [33]: from collections.abc import Iterable,Iterator

  In [34]: issubclass(list,Iterable)

  Out[34]: True

  In [35]: issubclass(Iterator,Iterable)

Python生成器

  2. 什么是一个生成器?

  生成器是可迭代的(Iterable),最简单的创建生成器方法是通过一对(),如下所示:

  In [37]: g = (i*i for i in [1,4,0])

  In [38]: g

  Out[38]: at 0x7fe8956e96d0>

  g 是一个生成器对象,generator object

  获取生成器对象的元素,可使用next函数,如下所示,获取第一个元素:

  In [39]: next(g)

  Out[39]: 1

  获取第二个元素:

  In [40]: next(g)

  Out[40]: 16

  3. 创建生成器的几种方法?

  如上所见,使用一对()能够创建一个生成器对象。

  除此之外,想必大家也都知道,是使用关键字 yield. yield出现在一个函数中,运行到yield处,返回的对象便是生成器对象(generator object).

  4. 生成器是迭代器吗?

  生成器对象(generator object)一定也是迭代器对象(Iterator object),如上面的生成器g,使用内置函数isinstance验证,返回True:

  In [43]: isinstance(g,Iterator)

  Out[43]: True

  因此,它具备一切迭代器的特性,关于迭代器我们已在上一个话题讨论,简而言之,迭代器的几个特点:

  ·是有去无回的,

  ·迭代器无需提前知道整个列表的所有元素,

  ·无需加载所有元素到RAM中尽而它是节省内存的(memory-efficient).

  生成器同样具备这些特性。除此之外,它还有一些独有的特性,下面跟随yield 我们便能看出来。

  以上内容为大家介绍了Python生成器,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线