Python中如何区分迭代器和生成器的基本概念?

2026-05-27 18:190阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2191个文字,预计阅读时间需要9分钟。

Python中如何区分迭代器和生成器的基本概念?

可迭代对象和迭代器(iterate)意味着重复,就像for循环迭代序列和字典那样,但实际上也可以使用for循环迭代其他对象:实现了方法__iter__的对象(迭代器协议的基础)。__iter__方法

可迭代对象和迭代器

迭代(iterate)意味着重复,就像 for 循环迭代序列和字典那样,但实际上也可使用 for 循环迭代其他对象:实现了方法 __iter__ 的对象(迭代器协议的基础)。
__iter__方法返回一个迭代器,它是包含方法 __next__ 的对象,调用时可不提供任何参数;
当你调用 __next__ 时,迭代器应返回其下一个值;如果没有可供返回的值,应引发 StopIteration 异常;
也可使用内置函数 next(),此种情况下,next(it) 与 it.__next()__ 等效。

至于为什么不用列表?因为在很多情况下,使用列表都有点太浪费了。例如,如果你有一个可逐个计算值的函数,你可能只想逐个地获取值,而不是使用列表一次性获取。这是因为如果有很多值,列表可能占用太多的内存。

阅读全文

本文共计2191个文字,预计阅读时间需要9分钟。

Python中如何区分迭代器和生成器的基本概念?

可迭代对象和迭代器(iterate)意味着重复,就像for循环迭代序列和字典那样,但实际上也可以使用for循环迭代其他对象:实现了方法__iter__的对象(迭代器协议的基础)。__iter__方法

可迭代对象和迭代器

迭代(iterate)意味着重复,就像 for 循环迭代序列和字典那样,但实际上也可使用 for 循环迭代其他对象:实现了方法 __iter__ 的对象(迭代器协议的基础)。
__iter__方法返回一个迭代器,它是包含方法 __next__ 的对象,调用时可不提供任何参数;
当你调用 __next__ 时,迭代器应返回其下一个值;如果没有可供返回的值,应引发 StopIteration 异常;
也可使用内置函数 next(),此种情况下,next(it) 与 it.__next()__ 等效。

至于为什么不用列表?因为在很多情况下,使用列表都有点太浪费了。例如,如果你有一个可逐个计算值的函数,你可能只想逐个地获取值,而不是使用列表一次性获取。这是因为如果有很多值,列表可能占用太多的内存。

阅读全文