Python的iterator和generator(迭代器与生成器)相关概念简述
程序员文章站
2024-02-12 12:41:16
...
Python的iterator和generator相关概念简述
前言
前段时间重新捡起了python,很多之前接触过的概念已经很陌生了,特别是一些具有明显Python风格的内容一度让我晕头转向,本文就python之中的迭代器(iterator),生成器(generator)和其他一些相关的概念做了一番整理。
迭代器(iterator)
首先,迭代器是一个用来访问 可遍历的对象 的对象。可遍历的对象有很多,最普遍的就是list(列表)。迭代器的原生形式就是for循环。
不使用for循环而使用迭代器的原因是t优化代码,提升效率,节约资源。迭代器对象从被遍历者的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只往前不后退。
#可遍历的对象
iterable = [1,3,5,7,9]
# 生成对应的迭代器
iterator = iter(iterable)
# 访问可遍历对象的下一个元素
# 如果访问到尽头会抛出异常,否则可以一直访问下去
while True:
try:
print(next(iterator))
except:
pass
迭代器只有两个基本方法 iter() 和 next(),相应地,若要使一个自定义的类的对象可以被迭代器遍历,则需要实现 __iter() 和 __next() 这两个特殊方法(接口)。
且,迭代器本身也是一个可遍历对象,可以被其他迭代器遍历(因为包含有__iter() 接口)。
class MyIterator:
def __init__():
pass
def __iter__(self):
pass
def __next__(self):
pass
生成器(generator)
同理,使用生成器的原因是为了t优化代码,提升效率,节约资源
(施工中)
推荐阅读
-
Python 迭代器(iterator)和生成器(generator)
-
Python的iterator和generator(迭代器与生成器)相关概念简述
-
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
-
详谈ES6中的迭代器(Iterator)和生成器(Generator)
-
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
-
Python之生成器(generator)和迭代器(Iterator)
-
Python生成器(generator)与迭代器(iterator)
-
Python 中容易混淆的概念--迭代器与生成器
-
详谈ES6中的迭代器(Iterator)和生成器(Generator)
-
Python 中容易混淆的概念--迭代器与生成器