Discuss / Python / 杨辉三角_继承

杨辉三角_继承

Topic source

    L =[1]

    while True:

       # 生成返回

        yield L[:]

        # 继承准备,+1

        L.append(0)

        # 继承开始,三个部分【首尾继承,判断辅助首位,0值辅助末尾】【中间继承利用循环】

        L = [L[i]+L[i-1] if i>0 else L[0] for i in range(len(L))]

yield L[:]      为啥得用切片呀

我记得切片时是赋一个副本

这里貌似没有影响

捣鼓了一下午终于明白了,返回L的话,results元素的指针还是指向L的,后面有L.append(0),顺带着就修改了,但是建立一个副本赋值给results就没有这个问题了。

楼上明白的,我还是不明白。。不是说生成器遇到yield就要中断吗?那么第一个元素必定应该就是[1]啊,为什么除了最后一项每一项后面都会多个0啊??实在是不懂里面的逻辑,包括你说的指针。。

def triangles():

    m=10

    l=[1]

    while len(l)<=m:

        yield l[]

        l.append(0)

        l=[l[x]+l[x-1] if x>0 else l[0] for x in range(len(l))]


  • 1

Reply