Python实现杨辉三角的几种形式

境界一、这个非常直接和苍白,值得注意的是对象之间的引用与复制,要确定是否只是引用的改变或者是否在内存堆中创建实体的副本。L = t 就是引用的拷贝,而L = t.copy()是内容级别的较深的拷贝。

def yanghui(max):
    t = [1]
    n = 1
    while n<max:
        print(t)
        if n>0:
            L = t.copy()
            for i in range(1,len(t)):
                L[i] = t[i]+t[i-1]
            L.append(1)
        t = L
        n= n+1
    return 'done'

境界二、这里面使用到了yield,将这个函数表达成为了一个生成器。

def yanghuiG(max):
    t = [1]
    n = 1
    while n<max:
        yield t
        if n>0:
            L = t.copy()
            for i in range(1,len(t)):
                L[i] = t[i]+t[i-1]
            L.append(1)
        t = L
        n = n + 1
    return 'done'

境界三、当t = [1]时,for i in range(len(t) – 1)]实际上是for i in range(0), 这时i是一个空list,就不会返回i,会自动跳出第一次循环,直接执行下一行语句

def yanghuiG3(max):
    t = [1]
    n= 0
    while n<max:
        yield t
        t = [t[i] + t[i+1] for i in range(len(t)-1)]
        t.insert(0, 1)
        t.append(1)
        n = n + 1
    return 'done'

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