Python學(xué)習(xí)之二:楊輝三角(生成器)

概念

一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器:generator。


題目

楊輝三角定義如下:

1

1? 1

1? 2? 1

1? 3? 3? 1

1? 4? 6? 4? 1

1? 5? 10? 10? 5? 1

把每一行看做一個(gè)list,試寫一個(gè)generator,不斷輸出下一行的list:

# -*- coding: utf-8 -*-

def triangles():

# 期待輸出:

# [1]

# [1, 1]

# [1, 2, 1]

# [1, 3, 3, 1]

# [1, 4, 6, 4, 1]

# [1, 5, 10, 10, 5, 1]

# [1, 6, 15, 20, 15, 6, 1]

# [1, 7, 21, 35, 35, 21, 7, 1]

# [1, 8, 28, 56, 70, 56, 28, 8, 1]

# [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

n = 0

for t in triangles():

print(t)

n = n + 1

if n == 10:

break


答案

def triangles():

L=[1]

while True:

yield? L

L=[1]+[L[i]+L[i+1]for i in range(len(L)-1)]+[1]

n=0

for t in triangles():

print(t)

n+=1

if? n ==10:

break


思路

楊輝三角的規(guī)律:

1、第n行有n個(gè)數(shù)字

2、每行的前后,都是“1”

3、第n行的第L[i]的值,等于第n-1行第L[i]+L[i+1]的值


解法

定義函數(shù),求楊輝三角

定義第一個(gè)數(shù)組,初始化是[1],也就是楊輝三角的第一個(gè)值。

隨后建一個(gè)生成器,使用yield函數(shù)來聲明這是一個(gè)生成器并循環(huán)打印L(該行數(shù)組)為:[1]+[L[i]+L[i+1]for i in range(len(L)-1)]+[1]

下面開始不懂:

首末兩位是1,中間是一個(gè)循環(huán),循環(huán)內(nèi)容:[L[i]+L[i+1]for i in range(len(L)-1)],代表中間的那些數(shù)字,這其中:

求得的值:L[i]+L[i+1]

形參:i

實(shí)參:range(len(L)-1)]? ?#這里不懂,range是一個(gè)序列,代表從0到len(L)-1,L是一個(gè)序列,它的長(zhǎng)度是什么呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容