国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python特性(五):序列誘導(dǎo)的迭代器

2019-11-08 03:08:50
字體:
供稿:網(wǎng)友

如果我們自己要實(shí)現(xiàn)iter方法,通過一個序列對象構(gòu)造出一個迭代器,會怎么做呢?

首先需要定義一個迭代器類。

class MyIteratorFromSequence:    def __init__(self, sequence):        self.start = 0        self.sequence = sequence    def next(self):        if self.start >= len(self.sequence):            raise StopIteration        self.start = self.start + 1        return self.sequence[self.start - 1]    def __iter__(self):        return self上面的代碼和博文中MyIterator類的定義完全類似,所不同的是,每次執(zhí)行next方法,返回的不再是start - 1,而是序列對象的第start - 1個元素。

測試這個迭代器的運(yùn)行效果

mylist = [1, 3, 5, 'a', 'b', 'c']myiter = MyIteratorFromSequence(mylist)PRint myiter.next()print myiter.next()print myiter.next()print myiter.next()print myiter.next()print myiter.next()輸出結(jié)果為

135abc有了MyIterorFromSequence的定義,iter方法的實(shí)現(xiàn)就很簡單了。

def myiter(sequence):    return MyIteratorFromSequence(sequence)注意:上面的代碼實(shí)現(xiàn)的功能比內(nèi)置的iter方法要簡單許多。因?yàn)槲覀冎粚?shí)現(xiàn)了序列對象到迭代器對象的構(gòu)造。

有了上面的分析,下面代碼的輸出就在情理之中了。

mylist = [1, 2, 3]myiter = iter(mylist)mylist.append(4)for i in myiter:    print i

輸出結(jié)果為

1234


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河东区| 高尔夫| 三都| 资中县| 股票| 岫岩| 新蔡县| 城步| 辽宁省| 海宁市| 合阳县| 海安县| 商城县| 夏津县| 辽阳县| 江油市| 故城县| 光泽县| 惠东县| 肇庆市| 托克逊县| 金寨县| 侯马市| 资中县| 沽源县| 汉寿县| 秭归县| 勐海县| 新乐市| 慈利县| 祁连县| 阳城县| 营山县| 漯河市| 武川县| 辽阳市| 峨边| 磴口县| 宁晋县| 务川| 高唐县|