python——楊輝三角


1、定義:

 

 

2、基於定義打印

# -*- coding:utf-8 -*-
# version:python3.7

n = 6
triangle = [[1],[1,1]]
for i in range(2,n):     #已經給出前兩行,所以求剩余行
    cur = [1]            #定義每行第一個元素
    pre = triangle[i-1]  #上一行
    for j in range(i-1): #算幾次
        cur.append(pre[j] + pre[j+1])
    cur.append(1)
    triangle.append(cur)
print(triangle)

執行結果:
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
# -*- coding:utf-8 -*-
# version:python3.7

n = 6
triangle = []
for i in range(n):
    cur = [1]
    triangle.append(cur)    #先追加進去
    if i == 0:
        continue
    pre = triangle[i-1]
    for j in range(i-1):
        cur.append(pre[j] + pre[j+1])
    cur.append(1)
print(triangle)

 

3、補0法打印

# -*- coding:utf-8 -*-
# version:python3.7

n = 6
triangle = [[1],[1,1]]
for i in range(2,n):
    newrow = triangle[i-1]
    newrow.append(0)
    row = [None] * (i+1)    #開辟空間
    for j in range(i+1):
        row[j] = newrow[j-1] + newrow[j]
    triangle.append(row)
print(triangle)

執行結果:
[[1], [1, 1, 0], [1, 2, 1, 0], [1, 3, 3, 1, 0], [1, 4, 6, 4, 1, 0], [1, 5, 10, 10, 5, 1]]

 

4、根據對稱性打印(索引)

 

 

# -*- coding:utf-8 -*-
# version:python3.7

n = 6
triangle = [[1],[1,1]]
for i in range(2,n):
    row = [1] * (i+1)
    for j in range(i//2):    #有圖知:大概的臨界值為一半,再仔細推敲
        val = triangle[i-1][j] + triangle[i-1][j+1]
        row[j+1] = val
        row[i-j-1] =val      #此處規律:兩個對稱值的索引和等於 i
    triangle.append(row)
print(triangle)

執行結果:
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]

 

5、單個列表覆蓋、切片完成

# -*- coding:utf-8 -*-
# version:python3.7

n = 6
row = [1] * n
for i in range(n):    #n行n次
    old = 1                  #old剛開始為1
    for j in range(i//2):
        val = old + row[j+1]
        old = row[j+1]    #此處現將row[j+1]的值賦給old,以防止被覆蓋
        row[j+1] = val
        if i != 2*j:
            row[i-j-1] = val
  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]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM