0%

CS61A 7 & 8

Week 7

Iterator

例如遍历序列,for x in s 会创建 iterator,不妨记为 i = iter (s)。不断取 x = next(i)x 会依次赋值,而 i 会向后移动。

到达结尾报错 StopIteration。可以用 try 处理异常:

1
2
3
4
5
try:
while True:
x = next(i)
# ...
except StopIteration

即为 for 的等价实现

Generator

一类生成 iterator 的函数。

函数内部 yield 返回的值会依次被迭代。

generator 的运行是懒惰的,调用一次 next 会执行到下一次 yield。故 generator 可以 yield 无穷次,生成不会停止的 iterator。

可用 yield for gen()yield generator gen() 的所有迭代值。

Week 8

面向对象。