問題描述:
楊輝三角定義如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
把每一行看做一個list,試寫一個generator,不斷輸出下一行的list
解決問題:明顯可以看出楊輝三角的生成方式,從第三行開始,每一行中出首尾兩個元素外,其餘的元素均是由上一行中相鄰兩個元素相加而成的。這滿足generator的使用條件
接下來我們來看一下代碼的實現:
# -*- coding: utf-8 -*-
def triangles(max):
n, l = 1, []
while n <= max:
if n == 1:
l = [1]
else:
l =[1] + [l[i - 1] + l[i] for i in range(n - 1) if i - 1 >= 0] + [1] #(n-1)是因爲第n行要從第n-1行產生,保證i-1不小於零是爲了避免首尾兩個元素重複相加
yield l
n = n + 1
return 'DONE'
運行結果如下:
可以看出,並沒有出現返回值‘DONE’,這個問題,我暫時無法解決