Python 中的 Pascal 三角形与二维数组

Pascal's triangle in Python with 2-D Arrays

我正在尝试编写一个 python 代码来遍历二维数组,外部列表中应包含行,内部列表中应包含 Pascal 三角形中数字的元素。我相信我 运行 遇到了初始化列表的问题,自从我在 Python 中写信以来已经有一段时间了,所以任何帮助将不胜感激。

我尝试使用这张图片编写我的代码

from math import factorial

def binomial(x, y):
    try:
        return factorial(x) / (factorial(y) * factorial(x - y))
    except ValueError:
        return 0


def pascals_triangle(number_of_rows):
    triangle = []
    if number_of_rows <= 0:
        return None
    else:
        for row in range(number_of_rows+1):
            for column in range(row+1):
                triangle[row][column] = (binomial(row, column))
    return triangle

print(pascals_triangle(1))

您将 triangle 视为二维列表,但它不是,这就是您收到错误的原因。尝试用这个替换你的函数:

def pascals_triangle(number_of_rows):
    triangle = []
    if number_of_rows <= 0:
        return None
    else:
        for row in range(number_of_rows+1):
            triangle.append([binomial(row, column) for column in range(row+1)])
    return triangle

使用 Pascal 的方法构建 Pascal 的三角形是值得​​的——只有加法,没有不必要的阶乘:

def PascalTriangle(n):
    res = [[1]]
    print(res[0])
    for line in range(2, n+2):
        newline = [1]
        for i in range(1, line-1):
            newline.append(res[-1][i-1] + res[-1][i])
        newline.append(1)
        res.append(newline)
        print(newline)
    return res

PascalTriangle(6)

[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]