美文网首页Python技术文章
Python【习题】杨辉三角:生成器

Python【习题】杨辉三角:生成器

作者: 彼岸的渔夫 | 来源:发表于2018-04-30 10:38 被阅读7次

    人生苦短,我用Python

    环境:Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1
    声明:学习资源来自于网络,这里是自己学习笔记总结与分享,每篇内容会随着学习的深入进行更新,如发现问题请评论留言。由于网络重复资源比较多,原作者不明,均未给出链接,实现代码根据自己的理解会重新编写,若原作者看到此文,请留言,我将标记文中代码来源。


    杨辉三角

    杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

    用Python实现杨辉三角
    杨辉三角的每一行可以看成一个列表,然后通过杨辉三角的规律不断计算出下一行的值,并输出此行列表。
    具体实现如下,有详细注释:

    • 方法1:
    # 杨辉三角
    # 定义一个生成器triangles()
    def triangles():
        L = [1] # 定义一个列表,杨辉三角第一行
        while True:
            yield L # 当遇到yield时,就输出列表L
            L.append(0) # 在列表末尾增加一个元素0,用于计算下一行
            L = [L[i - 1] + L[i] for i in range(len(L))] # 此为列表生成式,用于计算下一行
            # len(L)列表的长度,也就是杨辉三角的第len(L)行
            # range(len(L))  用for循环挨个计算每一行的每一个元素
            # L[i - 1] + L[i]计算的结果作为新行的元素
    
    n = 0 # 计数作用,循环结束条件
    for i in triangles():
        print(i) # 打印出杨辉三角
        n +=1
        if n == 10:  # 当打印10行时,结束.
            break
    

    下面是L = [L[i - 1] + L[i] for i in range(len(L))]的详细计算过程:

    初始 L = [1]
    经过 L.append(0) 
    此时 L = [1,0], len(L) = 2 行数即为接下来准备计算杨辉三角的第二行
    所以 L = [L[i - 1] + L[i] for i in range(2)]
    这里是列表生成式的计,for 循环,当
    i = 0, L[0-1] + L[0] = 1
    i = 1, L[1-1] + L[1] = 1
    所以L = [1, 1]  计算结果,即为杨辉三角的第二行
    接下来进入下一个while循环,遇到yield L,则输入杨辉三角第二行
    接下来准备计算第三方,重复以上。
    
    • 方法2:
    def method2():
        pass   # 占位
    

    相关文章

      网友评论

      本文标题:Python【习题】杨辉三角:生成器

      本文链接:https://www.haomeiwen.com/subject/txailftx.html