當前位置:成語大全網 - 新華字典 - 關於python的遞歸生成器

關於python的遞歸生成器

加了點註釋,自己看吧,下次不要用圖片了,直接拷貝代碼吧

#?-*-?coding:cp936?-*-

def?flatten(?nested?):

try:

#這裏首先檢查nested是否可叠代,不可叠代則拋出TypeError

for?sublist?in?nested:

#可叠代,那麽遞歸,檢查sublist是否還可以叠代

for?element?in?flatten(?sublist?):

#這裏的element必定不可叠代,已經完全展開,因此使用yield輸出,返回上層

#如果sublist是不可叠代的,那麽flatten(?sublist?)返回的生成器就只有壹個數據,就是sublist

#yield?element也相當於yield?sublist

#否則的話,flatten(?sublist?)返回的是展開的數據

yield?element

except?TypeError:

#nested不可叠代,直接返回上層即可

yield?nested