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

def triangel(n):
    L=[1]                                                                 #定义一个list[1]
    while True:
        yield L                                                           #打印出该list
        L=[L[x]+L[x+1] for x in range(len(L)-1)]        #计算下一行中间的值(除去两边的1)
        L.insert(0,1)                                                 #在开头插入1
        L.append(1)                                                 #在结尾添加1
        if len(L)>10:                                                 #仅输出10行

            break


#生成一个generator对象,然后通过for循环迭代输出每一行
a=angel(10)
for i in a:

    print(i)

注:普通函数和generator生成器的区别:

1.普通函数调用直接返回结果,generator函数的调用,返回一个generator对象;(调用generator时可以先创建一个对象,再用next()方法不断获得下一个返回值,但实际中通常用for循环实现)

2.generator在执行过程中,遇到yield就中断,下次又继续执行

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/duhm163/article/details/48161719
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞