
人生苦短,我用Python
環(huán)境:
Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1
聲明:學(xué)習(xí)資源來自于網(wǎng)絡(luò),這里是自己學(xué)習(xí)筆記總結(jié)與分享,每篇內(nèi)容會隨著學(xué)習(xí)的深入進(jìn)行更新,如發(fā)現(xiàn)問題請?jiān)u論留言。由于網(wǎng)絡(luò)重復(fù)資源比較多,原作者不明,均未給出鏈接,實(shí)現(xiàn)代碼根據(jù)自己的理解會重新編寫,若原作者看到此文,請留言,我將標(biāo)記文中代碼來源。

楊輝三角
楊輝三角,是二項(xiàng)式系數(shù)在三角形中的一種幾何排列,在中國南宋數(shù)學(xué)家楊輝1261年所著的《詳解九章算法》一書中出現(xiàn)。在歐洲,帕斯卡(1623----1662)在1654年發(fā)現(xiàn)這一規(guī)律,所以這個(gè)表又叫做帕斯卡三角形。帕斯卡的發(fā)現(xiàn)比楊輝要遲393年,比賈憲遲600年。
用Python實(shí)現(xiàn)楊輝三角
楊輝三角的每一行可以看成一個(gè)列表,然后通過楊輝三角的規(guī)律不斷計(jì)算出下一行的值,并輸出此行列表。
具體實(shí)現(xiàn)如下,有詳細(xì)注釋:
- 方法1:
# 楊輝三角
# 定義一個(gè)生成器triangles()
def triangles():
L = [1] # 定義一個(gè)列表,楊輝三角第一行
while True:
yield L # 當(dāng)遇到y(tǒng)ield時(shí),就輸出列表L
L.append(0) # 在列表末尾增加一個(gè)元素0,用于計(jì)算下一行
L = [L[i - 1] + L[i] for i in range(len(L))] # 此為列表生成式,用于計(jì)算下一行
# len(L)列表的長度,也就是楊輝三角的第len(L)行
# range(len(L)) 用for循環(huán)挨個(gè)計(jì)算每一行的每一個(gè)元素
# L[i - 1] + L[i]計(jì)算的結(jié)果作為新行的元素
n = 0 # 計(jì)數(shù)作用,循環(huán)結(jié)束條件
for i in triangles():
print(i) # 打印出楊輝三角
n +=1
if n == 10: # 當(dāng)打印10行時(shí),結(jié)束.
break
下面是L = [L[i - 1] + L[i] for i in range(len(L))]的詳細(xì)計(jì)算過程:
初始 L = [1]
經(jīng)過 L.append(0)
此時(shí) L = [1,0], len(L) = 2 行數(shù)即為接下來準(zhǔn)備計(jì)算楊輝三角的第二行
所以 L = [L[i - 1] + L[i] for i in range(2)]
這里是列表生成式的計(jì),for 循環(huán),當(dāng)
i = 0, L[0-1] + L[0] = 1
i = 1, L[1-1] + L[1] = 1
所以L = [1, 1] 計(jì)算結(jié)果,即為楊輝三角的第二行
接下來進(jìn)入下一個(gè)while循環(huán),遇到y(tǒng)ield L,則輸入楊輝三角第二行
接下來準(zhǔn)備計(jì)算第三方,重復(fù)以上。
- 方法2:
def method2():
pass # 占位