日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:Python之可迭代對象、迭代器、生成器

創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|成都網(wǎng)站改版|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都垃圾桶等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。

python可迭代對象(Iterable) 

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

Python迭代器(iterator) 

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

生成器(Generators) 

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

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

相關(guān)推薦:《Python視頻教程》

定義迭代器 

下面一個(gè)例子——斐波那契數(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)是第一個(gè)1.整個(gè)數(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

新聞名稱:創(chuàng)新互聯(lián)Python教程:Python之可迭代對象、迭代器、生成器
本文路徑:http://m.5511xx.com/article/djeisch.html