Problem Description
杨辉三角定义如下:
1
/ \
1 1
/ \ / \
1 2 1
/ \ / \ / \
1 3 3 1
/ \ / \ / \ / \
1 4 6 4 1
/ \ / \ / \ / \ / \
1 5 10 10 5 1
把每一行看做一个list,试写一个generator,不断输出下一行的list:
期待输出:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
Mentality
generator用法:
例子:打印10之内(不包括10)的数字的平方值
>>> g = (x * x for x in range(10))# 不包括10,也就是从0到9,一共10个数
>>> for n in g:
... print(n)
...
0
1
4
9
16
25
36
49
64
81
若要将一个函数改为generator,可以通过修改print为yield实现:
def fib(max):
n, a, b = 0