用python得到杨辉三角

请问如何用python得到杨辉三角
形式为1,1,1,1,2,1
算法复杂度越简单越好


N = int(input())
listA = [[1]]
for i in range(1, N):
    listB = [1]*(i+1)
    for j in range(1, i):
        listB[j] = listA[i-1][j-1] + listA[i-1][j]
    listA.append(listB)
 
for i in listA:
    for j in i:
        print(j, end = ' ')
    print()   #想要把结果在一行输出,就把这个print删掉

img

题主您好,您可以看看这个

# n为多少就打印多少行
def yanghui(n):
    # 存储杨辉三角的每行内容
    lines = [[1], [1, 1]]
    if n <= 2:
        # 当n小于等于2时,直接返回对应行,因为下标从0开始,所以是n-1
        return lines[n-1]
    # 从第三行开始遍历,因为已经有两个现成的,所以可以少遍历两行,故n-2
    for i in range(n - 2):
        temp = []
        # 遍历lines的最后一行以求取下一行的元素
        for j in range(len(lines[-1]) - 1):
            # 一个数的值等于它肩膀两个数的值之和
            val = lines[-1][j] + lines[-1][j + 1]
            temp.append(val)
        # 然后将左右两边的两个1放进行里面
        lines.append([1] + temp + [1])
    # 此时的杨辉三角应该是[[1], [1, 1],[1,2,1]...]的形式
    # 然后遍历打印出来
    for i in lines:
        for j in i:
            print(j,end=" ")
# 假设打印5行杨辉三角里面的数字
yanghui(5)

# numRows是需要写到第几行
numRows = 5
l1 = [1]
l2 = []
n = 0
while n < numRows:
    for i in l1:
        l2.append(i)
    l1 = [sum(t) for t in zip([0]+l1, l1+[0])]
    n += 1
print(l2)