一直都搞不明白python中的yield是怎么一回事,今天在些这道leetcode题目的时候突然就恍然大悟了。
题目为叶子相似的树 - 叶子相似的树 - 力扣(LeetCode) (leetcode-cn.com)
参考的讲解链接如下:
如何理解Python中的yield用法? - 知乎 (zhihu.com)
python中的生成器(generator)总结 - 周洋 - 博客园 (cnblogs.com)
明白了可迭代对象(Iterable)和迭代器(Iterator)以及生成器(generator)的概念。
生成器有哪些作用?
(1)如果想具体化数据的形式,通常会将数据存储在一个列表中。但这样做,列表的内容将占用有形内存。列表越大,占用的内存资源就越多。
(2)但是,如果数据集有某种逻辑,就不必存储在一个列表中,只需编写一个生成器,它将在需要时生成这些值,基本不占用内存。
相比迭代器,生成器最明显的优势就是节省内存空间,即它不会一次性生成所有的数据,而是什么时候需要,什么时候生成。