python生成器是用來(lái)代替"不一定能夠使用全部元素的數(shù)組",等到使用某一元素時(shí),才生成該元素,用來(lái)節(jié)省空間.
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比宛城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式宛城網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋宛城地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
python生成器寫(xiě)法有兩種
第一種:(數(shù)組生成式的中括號(hào)變成小括號(hào))
# 生成器
arr = (x for x in range(1,6))
# 生成器下一個(gè)元素用next()來(lái)取得
print("--next1--")
print(next(arr))
print("--next2--")
print(next(arr))
print("--next3--")
print(next(arr))
輸出結(jié)果:
--next1--
1
--next2--
2
--next3--
3
第二種方式: 使用關(guān)鍵字 yield 關(guān)鍵字
# 斐波那契數(shù)列生成器
def creatNum():
print("---開(kāi)始執(zhí)行生成器方法---")
a,b = 0,1
for i in range(0,5):
print("--step1--")
yield b
print("--step2--")
a,b = b,a+b
print("--step3--")
print("--..stop..--")
print("直接調(diào)用方法...")
print(creatNum())
#這里用一個(gè)標(biāo)識(shí)符來(lái)指向生成器(不要把creatNum()當(dāng)做函數(shù))
func = creatNum()
#一次生成
print("使用next調(diào)用")
x = next(func)
print(x)
#又一次生成
print("使用next調(diào)用")
x = next(func)
print(x)
print("使用next調(diào)用")
x = next(func)
print(x)
輸出結(jié)果:
直接調(diào)用方法...
使用next調(diào)用
---開(kāi)始執(zhí)行生成器方法---
--step1--
1
使用next調(diào)用
--step2--
--step3--
--step1--
1
使用next調(diào)用
--step2--
--step3--
--step1--
2
生成器還可以用 生成器.next 來(lái)調(diào)用,等價(jià)于 next(生成器)
如果使用next來(lái)調(diào)用,調(diào)用到生成器執(zhí)行完畢,就會(huì)崩掉. 我們基本不會(huì)使用next來(lái)執(zhí)行生成器
一般來(lái)說(shuō)會(huì)用for循環(huán)來(lái)執(zhí)行生成器:
# 斐波那契數(shù)列生成器
def creatNum():
print("---開(kāi)始執(zhí)行生成器方法---")
a,b = 0,1
for i in range(0,5):
print("--step1--")
yield b
print("--step2--")
a,b = b,a+b
print("--step3--")
print("--..stop..--")
print("直接調(diào)用方法...")
print(creatNum())
#這里用一個(gè)標(biāo)識(shí)符來(lái)指向生成器(不要把creatNum()當(dāng)做函數(shù))
func = creatNum()
#使用for循環(huán)來(lái)執(zhí)行生成器
for i in func:
print(i)
輸出結(jié)果: (執(zhí)行完畢不會(huì)崩潰)
直接調(diào)用方法...
---開(kāi)始執(zhí)行生成器方法---
--step1--
1
--step2--
--step3--
--step1--
1
--step2--
--step3--
--step1--
2
--step2--
--step3--
--step1--
3
--step2--
--step3--
--step1--
5
--step2--
--step3--
--..stop..--
在執(zhí)行生成器時(shí),可以使用 生成器.send(param) 方法
send方法不光是執(zhí)行一步next操作,還會(huì)把send里面的參數(shù)傳到生成器中充當(dāng)yield表達(dá)式的返回值
**(注意:第一次執(zhí)行,send里面的參數(shù)應(yīng)該為None,或者使用next方法)
def test():
i = 0
while i 5:
temp = yield i
print(temp)
i += 1
t = test()
#先使用next執(zhí)行,看能出來(lái)什么結(jié)果
t.__next__()
t.__next__()
print(t.__next__())
#使用send執(zhí)行
t.send("1231231231223123")
print(t.send("hahahahhahaha"))
輸出結(jié)果: (可見(jiàn)next輸出temp為none , 而send 則把值傳遞進(jìn)了生成器)
None
None
2
1231231231223123
hahahahhahaha
4
1. print(L.values()) or type() L是個(gè)字典,values keys 那幾個(gè)是字典的幾個(gè)方法
2. print or type(g) g是生成器
3. 錯(cuò)誤信息已經(jīng)寫(xiě)的很清楚了 你問(wèn)題說(shuō)反了,fib(8)是生成器
其實(shí)是類(lèi)型不同
existKill函數(shù)會(huì)返回一個(gè)可迭代對(duì)象,后面的帶數(shù)字中括號(hào)是對(duì)其內(nèi)部元素的引用
用Python的replace函數(shù)就可以去除字符串中的所有中括號(hào)
完整的Python程序如下
#!/usr/bin/python?
str?=?'?[[[[239,?267]],?[[238,?268]],?[[237,?268]],?[[236,?269]],?[[235,?269]],?[[234,?270]],?[[233,?270]],?[[232,?271]],?[[232,?281]],[[240,?289]],?[[241,?289]],?[[241,?287]],?[[242,?286]],?[[242,?284]],?[[243,?283]],?[[243,?279]],?[[244,?278]],?[[244,?273]],?[[243,272]],?[[243,?271]],?[[242,?270]],?[[242,?269]],?[[240,?267]]]]'?
out=str.replace('[','').replace(']','')
print(out)
運(yùn)行結(jié)果
239,?267,?238,?268,?237,?268,?236,?269,?235,?269,?234,?270,?233,?270,?232,?271,?232,?281,?240,?289,?241,?289,?241,?287,?242,?286,?242,?284,?243,?283,?243,?279,?244,?278,?244,?273,?243,?272,?243,?271,?242,?270,?242,?269,?240,?267
直接輸入即可。python在括號(hào)里直接輸入數(shù)字即可,運(yùn)用print函數(shù)的功能為將函數(shù)括號(hào)里的內(nèi)容輸出到屏幕上,括號(hào)里是數(shù)字就直接打數(shù)字,如print(1234),括號(hào)里是字符要加單引號(hào)或雙引號(hào),
這樣寫(xiě)你看下:這是這種寫(xiě)法無(wú)法將x傳到b里面去
def b(y):
return x+y
def a(x):
return b
其實(shí)你調(diào)用a--打印的是a的內(nèi)存地址,a(x)就是調(diào)用的a方法,返回的是b相當(dāng)于你直接打印b的內(nèi)存地址一樣,
所以
a--函數(shù)a的內(nèi)存地址
a(x) --調(diào)用a方法,返回b函數(shù)對(duì)象相當(dāng)于--b
a(x)(y)--b(y)調(diào)用b方法返回x和y的值,這里x取的是a方法的參數(shù)值,y是b方法的參數(shù)值,這點(diǎn)可以理解下參數(shù)的作用域
新聞名稱(chēng):python括號(hào)函數(shù) python函數(shù)括號(hào)里放什么
地址分享:http://jinyejixie.com/article48/doseoep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、標(biāo)簽優(yōu)化、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容