python 學習之 generator(生成器)生成楊輝三角



問題描述:

楊輝三角定義如下:

          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’,這個問題,我暫時無法解決大笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章