Python实现杨辉三角
2020-02-26 本文已影响0人
李白开水
要实现的杨辉三角:
image.png
方法一:
思路:
申请一个n行的二维数组
打印出n行的依次递增一个元素,且元素都为一列表:
arr = [[1] * i for i in range(1, n + 1)]
print(arr)
如下图所示:
image.png
将每一行中,元素下标不为0和不为数组长度的元素(下标为k)的值改为上一个列表下标为n-1和n的值的和:
n = 10
arr = [[1] * i for i in range(1, n + 1)]
# print(arr)
for i in range(len(arr)):
for j in range(len(arr[i])):
# print(arr[i][j])
if j != 0 and j != len(arr[i]) - 1:
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
print(arr)
结果如图:
image.png
最后修改一下输出格式:
n = 10
arr = [[1] * i for i in range(1, n + 1)]
# print(arr)
for i in range(len(arr)):
for j in range(len(arr[i])):
# print(arr[i][j])
if j != 0 and j != len(arr[i]) - 1:
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
print(" ".join(map(lambda x: str(x), arr[i])))
输出:
image.png
方法二:
思路:
同样先打印出n行的依次递增一个元素,且元素都为一列表:
n = 10
an = [1] * n
for i in range(n):
print(an[0:i+1])
如图:
image.png
因为是要在原数组上做更改,所以逆序输出列表,并将列表相应的值更新:
n = 10
an = [1] * n
for i in range(n):
# print(an[0:i+1])
for j in range(i-1,0,-1):
an[j] = an[j] + an[j-1]
print(an[0:i+1])
结果:
image.png
维基百科也有实现:
https://zh.wikipedia.org/wiki/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2