Python中的迭代器和生成器

作者 : 慕源网 本文共1174个字,预计阅读时间需要3分钟 发布时间: 2021-09-30 共246人阅读

Python中的迭代器和生成器

介绍

在本文中,我们将介绍如何创建和使用迭代器。在遍历完迭代器之后,我们还将探讨如何使用生成器来高效地使用迭代器。然后,我们还将看看迭代器和生成器的用例。

迭代器

在python中,有多种数据结构可用,如字符串、列表、字典等。让我们以字符串数据结构为例。

> for a in [1, 2, 3, 4]:
     print(a)

如果你想遍历上面的元素列表,那么你必须使用 for 循环编写 python 代码并将其显示到控制台。

但是,python 有一个内置的迭代器协议,它将迭代器对象作为输入并返回一个迭代器。List、String、Dictionary、tuple 是迭代器对象的一个​​例子。

迭代协议具有内置函数名 iter()。

>>> a = iter([11,22])
>>> a
<listiterator object at 0x1004ca850>
#After first iteration
>>> next(x)
11
#After second iteration
>>> next(x)
22
>>> next(x)
  File "<stdin>", line 1, in <module>
StopIteration

在使用迭代器时,我们使用 iter() 方法来迭代对象。它与 next() 函数结合使用,该函数将迭代迭代器的下一个元素。迭代器的返回值也返回一个迭代器对象。

生成器

生成器是在迭代器上创建的抽象。它简化了迭代器的创建。在使用迭代器和生成器循环遍历任何数据结构时,它会生成一系列值而不是单个值。生成器也被称为“懒惰的评估器”。

例子

在这里,我们将处理大文件,如果我们使用普通的 python 代码,这些文件效率很低。但是,在这种情况下使用生成器是有效的,因为它不会将所有数据加载到内存中。

无需生成器即可读取文件的代码块,

csv_gen = csv_reader("bfs_csv.txt")
for line in csv_gen:
    print(line)

在这种情况下,我们可以使用生成器来避免在执行 python 程序期间出现内存过大的问题。

def read(filename):
    for line in open(filename, "r"):
        yield line

ield 将产生一个生成器对象。

生成器函数类似于常规函数,但它使用 Python yield 关键字而不是 return.

Yield函数

  • yield 函数是 python 中一个简单的内置函数,就像任何其他 python 函数一样。主要用于控制生成器的流程,类似于普通python函数中的return语句。
  • 除了yield,python还有一些高级的生成器方法,如下所述,
    • .send()
    • .throw()
    • .close()

结论

在本文中,我们探讨了 Python 中的迭代器和生成器。我们还查看了有关如何使用带有 next 和 yield 关键字的迭代器和生成器的实际示例。此外,我们还探索了在 Python 中使用生成器的实时用例。


慕源网 » Python中的迭代器和生成器

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录