进阶
迭代器与生成器
iter、next、yield,惰性求值,LeetCode 与刷题常用
迭代器与生成器
迭代器按需产出元素,生成器用 yield 写迭代器,省内存、可表示无穷序列。
迭代器 iter / next
可迭代对象(list、range、dict...)可用 iter() 得到迭代器,用 next() 取下一个;没有下一个会抛 StopIteration。
加载代码编辑器中…
生成器 yield
函数里用 yield 就变成生成器函数,调用后返回生成器(一种迭代器),每次 next() 执行到下一个 yield 为止。
加载代码编辑器中…
惰性求值
生成器按需算,不一次占满内存,适合大序列或无穷序列。
加载代码编辑器中…
小结
- 迭代器:
iter(obj)、next(it),for依赖可迭代/迭代器。 - 生成器:
yield函数 或(x for x in ...),惰性、省内存。 - LeetCode 里常用
yield做「按需遍历」或「流式结果」。