中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python當中關于楊輝三角的列表實現

發布時間:2020-07-04 01:38:04 來源:網絡 閱讀:1346 作者:喜文靜的我 欄目:編程語言

楊輝三角
的一些理解:
感覺楊輝三角的實現至少在前兩行是特殊的。在后面的幾行代碼中我是這樣想的,可以用第n項加第n+1項。兩邊再加上1就可以了罷。兩邊如果都這么做的話可以實現對稱的操作。

讓我們來實現吧。在實現的過程中想套用一層循環發現難以實現,用兩層試試看。

yh=[[1],[1,1]]
for i in range(2,6):
line=[1]
ls=yh[i-1]
for j in range(len(ls)-1):
line.append(ls[j]+ls[j+1])
line.append(1)
yh.append(line)
print(yh)

#打印n行的楊輝三角
a=int(input('請輸入第幾行'))
y=[[1],[1,1]]

for i in range(a-2):
n=y[i+1]
long=len(n)
line=[1]
for j in range(long-1):
line.append(n[j]+n[j+1])
line.append(1)
y.append(line)
print(line)

關于補零的一些想法,在楊輝三角當中,可以將左右兩邊當成多了一個零,在進入下一行的時候就可以看成0+1=1,同理右邊也是一樣,在實際寫代碼中,開始確實是左邊多一個[0]

,右邊多一個[0],但實際操作下來,左邊的[0]可以省去,因為在python當中是有獨特的負索引機制,在右邊的最后一項可以看做是[-1]項,這樣從0開始迭代的話可以從i-1開始

迭代,是一個python的獨特思想。

y=[[1]]

for i in range(1,6):
n=y[i-1]+[0]
l=[]

for j in range (i+1):
    l.append(n[j-1]+n[j])

y.append(l)

print(y)

如果用獨特的負索引的話,用對稱性也是可以做出來的也是從-1項開始做起一直做到中間,這就需要在一開始的時候就創建一個剛剛好的列表空間,然后將元素一個一個填充進去

,這種方法就叫做對稱法
y=[[1]]
for i in range(5):

n=y[i]+[0]

line=[1]*(i+2)

for j in range((i+2)//2+1):

    line[j]=n[j-1]+n[j]

line[-j-1]=line[j]    

y.append(line)

print(y)

其實有這個想法之后實現代碼并不困難,其實這種方法只是一種思想,這更多是為最后一種方法鋪路,前面三種方法可以看出都是引用一個新列表然后將新列表填充到舊列表當中,如果將舊列表直接copy一個新列表這樣可以省去許多冗余量,我們稱這第四種方法為單列覆蓋法。

y=[1]*6
for i in range(6):
long=6-i
tmp=1

for j in range (1,i//2+1):
    val=y[j]+tmp
    tmp=y[j]
    y[j]=val
    y[-long-1]=val
print(y[:i+1])

在這里引用了一個中間變量tmp因為如果不引用的話會造成數據覆蓋,會有人在實際操作中會判斷是奇數列還是偶數列,但是我們在實驗中可以看到其實判斷是多余的,因為完全可以在多余列覆蓋即可。
到現在楊輝三角就差不多完成了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳东县| 兴安盟| 延寿县| 邵武市| 县级市| 巩留县| 广水市| 罗源县| 敦煌市| 屏南县| 河北区| 泗水县| 江城| 屯昌县| 兴安县| 通州区| 铜鼓县| 安多县| 萝北县| 登封市| 水富县| 吉木乃县| 河池市| 璧山县| 年辖:市辖区| 修文县| 仁布县| 曲麻莱县| 拜泉县| 福州市| 交口县| 渭源县| 四川省| 保靖县| 通州市| 车致| 泾源县| 纳雍县| 长兴县| 宁河县| 巩义市|