Discuss / Python / 打卡,解释,欢迎交流,不对的地方请回复,谢谢!

打卡,解释,欢迎交流,不对的地方请回复,谢谢!

Topic source

def triangles(m):

    L = [1]

    n = 1

    while n <= m:

        yield L

        L = [1]+[L[i]+L[i+1] for i in range(len(L)-1)]+[1]

        n = n + 1

=========

这里和作业不一样是定义了参数m,作为while时的判断,没用m时判断用True即可(大小写严格区分)。

我百度了下,有个解释容易理解,说的yield相当于return,因为是生成器,所以下一次执行就是上一次结果后。

执行过程,假设m=3(每行用list表示):

1、n=1,执行到yield L,return L的值,即初值L=[1],这是生成器第一个值,即杨辉三角第一行;

2、循环n=2,执行L = [1]+[L[i]+L[i+1] for i in range(0)]+[1],即L = [1]+[1],也即是L=[1,1],这里range(0)是空,这是生成器第二个值,即杨辉三角第二行;

3、循环n=3,执行L = [1]+[L[i]+L[i+1] for i in range(1)]+[1],即L=[1]+[[L[0]+L[1]]+[1],L[0]+L[1]上个L=[1,1],即L=[1,2,1],,这是生成器第三个值,即杨辉三角第三行;

...

4、按照输出要求格式打印


  • 1

Reply