麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 操作系統 > 正文

python特性(二):迭代器與for語句

2024-06-28 16:05:12
字體:
來源:轉載
供稿:網友

網上許多文章說Python的for語句中,in關鍵字后面的對象是一個集合。例如

for i in [1,2,3]    PRint i上面代碼中in關鍵字后面的對象[1,2,3]是一個list,也是一個集合。

但in關鍵字后面的對象其實不必是一個集合。后面接一個序列對象也是合法的。 例如

myrange = MyRange(0, 10)for i in myrange:    print i上面代碼中的myrange對象是一個序列對象,但不是集合。參見上一篇博文。

事實上,for語句中in關鍵字后面的對象也不必是序列對象,它只需要是一個可迭代對象(Iterable)即可。

一個可迭代的對象需要滿足下面兩個條件之一:

它實現了__iter__方法。該方法會返回一個迭代器對象?;蛘咚且粋€序列對象。

注意:如果一個類型實現了__iter__方法,那么在該方法中顯式地給出了與該類型相關的迭代器如何構造??墒?,對于序列類型來說,它有一個很天然的迭代器。因此,無需通過實現__iter__方法來顯式定義。下一篇博文將介紹如何通過序列對象構造天然的迭代器。這里先介紹迭代器對象的嚴格定義。

一個迭代器,本質上也是一個序列。它需要實現下面兩個方法。

next方法(老版本的Python叫__next__方法)。當第11次調用next方法時,會返回序列的第1個元素;當第2次調用next方法時,會返回序列的第2個元素;當序列中的元素耗盡,拋出StopIteration異常。__iter__方法。前面說過__iter__方法通常返回迭代器對象。因此,對于一個迭代器來說,它的__iter__方法只需返回其本身即可。

通過上面的定義,我們知道,一個迭代器對象,也必是可迭代的。

下面的代碼定義了一個迭代器。

class MyIterator:    def __init__(self, start, end):        self.start = start        self.end = end    def next(self):        if self.start >= self.end:            raise StopIteration        self.start = self.start + 1        return self.start - 1    def __iter__(self):        return self測試代碼

myiter = MyIterator(0, 2)print myiter.next()print myiter.next()print myiter.next()輸出結果如下

01Traceback (most recent call last):  File "test.py", line 27, in <module>    print myiter.next()  File "test.py", line 16, in next    raise StopIterationStopIteration

下面的代碼測試在for語句中使用迭代器

myiter = MyIterator(0, 10)for i in myiter:    print i輸出結果

0123456789

在下一篇博文中,將繼續介紹for語句的工作原理。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产超碰人人做人人爱 | 天天操天天碰 | 欧美视频一二三区 | 91九色视频在线播放 | 露脸各种姿势啪啪的清纯美女 | 免费在线观看国产 | 91福利免费观看 | 日韩av在线播放一区 | 久久国产夫妻视频 | 日本网站在线看 | 国产www免费 | 久久久久久久久久91 | 国产成人综合在线观看 | 久久久一区二区三区四区 | 久久精品中文字幕一区二区 | 婷婷久久青草热一区二区 | 久久草在线视频 | 色污视频在线观看 | 毛片大全免费 | 自拍亚洲伦理 | 精品亚洲网站 | 黄色大片在线免费看 | 久久蜜桃香蕉精品一区二区三区 | 国产一级桃视频播放 | 毛片午夜 | 免费在线观看亚洲 | 久草在线观看福利视频 | 欧美性受xxxx人人本视频 | 麻豆蜜桃在线观看 | 毛片免费在线 | 国产无限资源在线观看 | 国产亚洲美女精品久久久2020 | 一级做a爱片久久毛片a高清 | 性欧美性欧美 | 91热久久免费频精品黑人99 | www.狠狠插.com| 欧美成网站 | 欧美成人小视频 | 成人店女老板视频在线看 | 狠狠干五月天 | 国产chinesehd精品91 |