素数、杨辉三角、封装结构和集合操作(14)——杨辉三角单行覆盖解法

使用单个列表的覆盖,切片打印

n=9
row=[1]*n  ##一次性开辟全部空间
for i in range(n):
    old=1
    for j in range(i//2):
        va=old+row[j+1]
        old=row[j+1]  ##row[j+1]将被覆盖,通过变量old先将row[j+1]保留
        row[j+1]=va
        if i !=2*(j+1):
            row[i-(j+1)]=row[j+1]
        else:
            print('***')
    print(row[:i+1])  ##切片打印列表

[1]
[1, 1]
***
[1, 2, 1]
[1, 3, 3, 1]
***
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
***
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
***
[1, 8, 28, 56, 70, 56, 28, 8, 1]
va=old+row[j+1]
old=row[j+1]
row[j+1]=va

等于

row[j+1],old=old+row[j+1],row[j+1]

 

posted @ 2019-10-31 16:39  chili7  阅读(223)  评论(0编辑  收藏  举报