真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python中的可迭代對象、迭代器、生成器-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比皮山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式皮山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋皮山地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。

Python中的可迭代對象、迭代器、生成器?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Python可迭代對象(Iterable)

Python中經(jīng)常使用for來對某個對象進(jìn)行遍歷,此時被遍歷的這個對象就是可迭代對象,像常見的list,tuple都是。如果給一個準(zhǔn)確的定義的話,就是只要它定義了可以返回一個迭代器的__iter__方法,或者定義了可以支持下標(biāo)索引的__getitem__方法,那么它就是一個可迭代對象。

Python迭代器(iterator)

迭代器是通過next()來實(shí)現(xiàn)的,每調(diào)用一次他就會返回下一個元素,當(dāng)沒有下一個元素的時候返回一個StopIteration異常,所以實(shí)際上定義了這個方法的都算是迭代器??梢杂猛ㄟ^下面例子來體驗(yàn)一下迭代器:

生成器(Generators)

生成器是構(gòu)造迭代器的最簡單有力的工具,與普通函數(shù)不同的只有在返回一個值的時候使用yield來替代return,然后yield會自動構(gòu)建好next()和iter()

因?yàn)榈魅绱似毡椋琾ython專門為for關(guān)鍵字做了迭代器的語法糖。在for循環(huán)中,Python將自動調(diào)用工廠函數(shù)iter()獲得迭代器,自動調(diào)用next()獲取元素,還完成了檢查StopIteration異常的工作。

定義迭代器

下面一個例子——斐波那契數(shù)列

# -*- coding: cp936 -*-
class Fabs(object):
    def __init__(self,max):
        self.max = max
        self.n, self.a, self.b = 0, 0, 1  #特別指出:第0項(xiàng)是0,第1項(xiàng)是第一個1.整個數(shù)列從1開始
    def __iter__(self):
        return self
    def next(self):
        if self.n < self.max:
            r = self.b
            self.a, self.b = self.b, self.a + self.b
            self.n = self.n + 1
            return r
        raise StopIteration()

print Fabs(5)
for key in Fabs(5):
    print key

結(jié)果

<__main__.Fabs object at 0x01A63090>
1
1
2
3
5

看完上述內(nèi)容,你們掌握Python中的可迭代對象、迭代器、生成器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站題目:Python中的可迭代對象、迭代器、生成器-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/coceds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部