Python中迭代器与生成器怎么使用(python,开发技术)

时间:2024-05-03 14:49:44 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Python%E4%B8%AD%E8%BF%AD%E4%BB%A3%E5%99%A8%E4%B8%8E%E7%94%9F%E6%88%90%E5%99%A8%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8

内置有__iter__方法的都叫可迭代的对象。

Python内置str、list、tuple、dict、set、file都是可迭代对象。

执行可迭代对象的__iter__方法,拿到的返回值就是迭代器对象。

只有字符串和列表都是依赖索引取值的,而其他的可迭代对象都是无法依赖索引取值的,只能使用迭代器对象。

内置有__iter__方法,执行该方法会拿到迭代器本身。

内置__next__方法,执行该方法会拿到迭代器对象中的一个值。

可迭代对象可以直接使用常规for语句进行遍历

for循环称为迭代器循环,in后必须是可迭代的对象。

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。

__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。

__next__() 方法会返回下一个迭代器对象。

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1,在 20 次迭代后停止执行:

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

yield后面可以加多个数值(可以是任意类型),但返回的值是元组类型的。

提供一种自定义迭代器的方式

yield可以暂停住函数,并提供当前的返回值

yield和return:

相同点:两者都是在函数内部使用,都可以返回值,并且返回值没有类型和个数的限制

不同点:return只能返回一次值;yield可以返回多次值

复杂版本:

把列表推导式的[]换成()就是生成器表达式 。

优点:比起列表推导式,可以省内存,一次只产生一个值在内存中

举例:

本文:Python中迭代器与生成器怎么使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:PHP如何操作XML下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18