Python中迭代器与生成器怎么使用
导读:本文共3607字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、迭代器(foreach)1、可迭代的对象内置有__iter__方法的都叫可迭代的对象。Python内置str、list、tuple、dict、set、file都是可迭代对象。x=1.__iter__#SyntaxError:invalidsyntax#以下都是可迭代的对象name='nick'.__iter__print(type(n... ...
目录
(为您整理了一些要点),点击可以直达。内置有__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中迭代器与生成器怎么使用的详细内容,希望对您有所帮助,信息来源于网络。