用python寫趣味程式感覺屌屌的,停不下來
#生成器生成展示楊輝三角
#原理是在乙個2維陣列裡展示楊輝三角,空的地方用0,輸出時,轉化為' '
def yang(line):
n,leng=0,2*line - 1
f_list = list(range(leng+2)) #預先分配,insert初始胡會拖慢速度,最底下一行,左右也有1個空格
#全部初始化為0
for i,v i程式設計客棧n enumerate(f_list):
f_list[v] = 0
zerolist = f_ #預留乙個全零的陣列
f_list[leng//2] = 1 #初始的第一行
re_list =f_list[:]
n=0while n < line:
n = n+1
yield re_list
f_list,re_list = re_list[:],zerolist[:]
start = leng//2-n #計算一行中第乙個1的位置
end = start + 2*n #計算一行中最後乙個1的位置
while start <= end:
re_list[start] = f_list[start - 1] +www.cppcns.com f_list[star程式設計客棧t+1] #不管是不是1,該位置的數字,都是上一行該位置的左右兩個數的和
start = start + 1
return 'done'
def printlist(l):
n = 0
p_str = ''
for value in l:
ch = str(value)
if value == 0:
ch = ' '
p_str = p_str + ch
print(p_str)
for value in yang(8):
printlist(value)
本文標題: python 生成器生成楊輝三角的方法(必看)
本文位址:
python 生成器 楊輝三角
楊輝三角的定義如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1把每一行看做乙個list,試寫乙個generator,不斷輸出下一行的list 期待輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 1,5,10,10,5,1 1,6,15,2...
Python生成器實現楊輝三角
很容易就得出規律 除根以外,每個數都由它上層的左右兩數之和,乙個數不存在即視為0。根為1 由此規律,易得每層邊界數值為1 下面用python的生成器來實現這個著名的三角 coding utf 8 defyanghui level for i in range level 由於根不符合抽象出的規律,單...
generator 生成楊輝三角
摘錄自廖雪峰 python3 生成器 generator和函式的執行流程不一樣。函式是順序執行,遇到return語句或者最後一行函式語句就返回。而變成generator的函式,在每次呼叫next 的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。看到乙個比較巧妙的辦...