python输出杨辉三角

杨辉三角定义
      1
    1   1
  1   2   1
1   3   3   1

今天学习到的一个python代码实现非常简洁
网址如下:
python 生成器
对于像我这样python初学者非常推荐
代码如下:

# -*- coding: utf-8 -*-  
def triangles():
       N = [1]
       while True:
           yield N
           N.append(0)
           N = [N[i]+N[i-1] for i in range(len(N))]

if __name__ == "__main__":
        n = 0
        for t in triangles():
        print(t)
        n = n + 1
        if n == 10:
            break

利用生成器(yield)使得每次调用的时候分配内存避免开辟过大内存,测试函数输出10行。每次迭代利用在末尾加入的0来补位,这样新的一行第i个数字就是上一行第i个数字加上第i-1个数字,若计算的是该行第一个数字,则不是一般性的为上一行第1个数字加上补位的0(python 中-1指list最后一个元素)

你可能感兴趣的:(python输出杨辉三角)