python創(chuàng)建生成器以及訪問的方法詳解
前言
與列表一次性地將數(shù)據(jù)全都加載到內(nèi)存不同的是,生成器使用推斷加載數(shù)據(jù),每次只推斷出一個對象,在數(shù)據(jù)量比較大時,可以節(jié)省內(nèi)存。
這篇文章簡單總結(jié)下創(chuàng)建生成器的方法,并用舉一個生成器在斐波那契應(yīng)用的例子。
一、創(chuàng)建生成器以及訪問的方法
1. map
iter1 = map(lambda x:x, [0,1,2])
2. ()
iter2 = (x for x in range(3))
3.使用yield
def iter3(): for i in range(3): yield i
看下它們的類型:
iter1 type is: <class 'map'>
iter2 type is: <class 'generator'>
iter3() type is: <class 'generator'>
其中,map類型也是生成器類型。如何訪問一個生成器?以iter1為例,有以下方法:
# 1.一個個訪問 print(next(iter1)) # 2.使用for訪問 for i in iter1: print(i) break # 3.轉(zhuǎn)化為列表訪問 print(list(iter1))
輸出:
0
1
[2]
二、生成器的應(yīng)用
使用迭代法來求解斐波那契數(shù)列:
# 使用生成器構(gòu)菲波那契數(shù)列,數(shù)列下標(biāo)從1開始 def fib(n): a,b,i = 0,1,0 while i<n: yield b a,b = b,a+b i += 1 def get_fib(n): # 此時fib(n)是一個生成器 gener = fib(n) for i in range(n-1): next(gener) return next(gener) print(get_fib(3))
到此這篇關(guān)于python創(chuàng)建生成器以及訪問的方法詳解的文章就介紹到這了,更多相關(guān)python生成器及訪問方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim())
這篇文章主要介紹了matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03pandas將list數(shù)據(jù)拆分成行或列的實現(xiàn)
這篇文章主要介紹了pandas將list數(shù)據(jù)拆分成行或列的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12基于Tensorflow批量數(shù)據(jù)的輸入實現(xiàn)方式
今天小編就為大家分享一篇基于Tensorflow批量數(shù)據(jù)的輸入實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02