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-03
pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn)
這篇文章主要介紹了pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Tornado 多進(jìn)程實(shí)現(xiàn)分析詳解
這篇文章主要介紹了Tornado 多進(jìn)程實(shí)現(xiàn)分析詳解,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Python基于百度AI實(shí)現(xiàn)抓取表情包
本文先抓取網(wǎng)絡(luò)上的表情圖像,然后利用百度 AI 識別表情包上的說明文字,并利用表情文字重命名文件,感興趣的小伙伴們可以參考一下2021-06-06
基于Tensorflow批量數(shù)據(jù)的輸入實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于Tensorflow批量數(shù)據(jù)的輸入實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python編寫memcached啟動腳本代碼實(shí)例
這篇文章主要介紹了Python編寫memcached啟動腳本代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
python 發(fā)送和接收ActiveMQ消息的實(shí)例
今天小編就為大家分享一篇python 發(fā)送和接收ActiveMQ消息的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

