本篇閱讀的代碼實(shí)現(xiàn)使用一個(gè)初始化種子和迭代函數(shù),通過(guò)嵌套函數(shù)對(duì)初始化種子進(jìn)行迭代,最終生成一個(gè)列表。
1、unfold函數(shù)接受迭代函數(shù),并初始化種子,產(chǎn)生列表。
對(duì)函數(shù)fn進(jìn)行迭代化處理,必須始終返回包含兩個(gè)元素的列表[value,nextSeed],或者返回False以終止構(gòu)建器函數(shù)。
2、函數(shù)的unfold內(nèi)部定義了構(gòu)建器fn_generator。
這個(gè)構(gòu)建器使用while循環(huán)調(diào)用迭代器函數(shù)并生成一個(gè)值,直到它返回False。最終通過(guò)列表導(dǎo)出,返回生成函數(shù)生成的列表。
構(gòu)建器是一個(gè)簡(jiǎn)單但功能強(qiáng)大的創(chuàng)建迭代器的工具。其書(shū)寫(xiě)方式與標(biāo)準(zhǔn)函數(shù)相似,但是在要返回?cái)?shù)據(jù)時(shí)使用yield語(yǔ)句。每當(dāng)您對(duì)生成器調(diào)用next()時(shí),它將從最后一次運(yùn)行的位置恢復(fù)執(zhí)行(它將記住最后一次執(zhí)行語(yǔ)句時(shí)的所有數(shù)據(jù)值)。
fn_generator是用于while語(yǔ)句結(jié)束時(shí)使用yield返回當(dāng)前while循環(huán)中val[0]的一個(gè)值。下次調(diào)用時(shí),下一個(gè)循環(huán)繼續(xù)進(jìn)行,在下一個(gè)循環(huán)中繼續(xù)返回val[0]的值,直到該迭代函數(shù)fn返回false結(jié)束while循環(huán)。
對(duì)于unfold函數(shù)的return語(yǔ)句,使用list導(dǎo)出不停地調(diào)用fn_generator生成器,直到生成器退出,形成列表并返回。
以上就是Python中如何使用初始化種子和迭代函數(shù)生成列表的介紹,希望對(duì)大家有所幫助。