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

首頁 > 編程 > Python > 正文

Python iter()函數用法實例分析

2020-02-22 23:29:28
字體:
來源:轉載
供稿:網友

本文實例講述了Python iter()函數用法。分享給大家供大家參考,具體如下:

python中的迭代器用起來非常靈巧,不僅可以迭代序列,也可以迭代表現出序列行為的對象,例如字典的鍵、一個文件的行,等等。

迭代器就是有一個next()方法的對象,而不是通過索引來計數。當使用一個循環機制需要下一個項時,調用迭代器的next()方法,迭代完后引發一個StopIteration異常。

但是迭代器只能向后移動、不能回到開始、再次迭代只能創建另一個新的迭代對象。

反序迭代工具:reversed()將返回一個反序訪問的迭代器。python中提供的迭代模塊:itertools模塊

先看幾個例子:

>>> l=[2,3,4]>>> iterl=iter(l)>>> iterl.next()2>>> iterl.next()3>>> iterl.next()4>>> iterl.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration
>>> d={'one':1,'two':2,'three':3}>>> d{'three': 3, 'two': 2, 'one': 1}>>> iterd=iter(d) #字典的迭代器會遍歷字典的鍵(key)>>> iterd.next()'three'>>> iterd.next()'two'>>> iterd.next()'one'>>> iterd.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration

下面查看iter()函數的幫助信息:

>>> help(iter)Help on built-in function iter in module __builtin__:iter(...)  iter(collection) -> iterator  iter(callable, sentinel) -> iterator  Get an iterator from an object. In the first form, the argument must  supply its own iterator, or be a sequence.  In the second form, the callable is called until it returns the sentinel.

iter()函數有兩種用法,一種是傳一個參數,一種是傳兩個參數。結果都是返回一個iterator對象。

所謂的iterator對象,就是有個next()方法的對象。next方法的慣例或約定(convention)是,每執行一次就返回下一個值(因此它要自己記錄狀態,通常是在iterator對象上記錄),直到沒有值的時候raiseStopIteration。

傳1個參數:參數collection應是一個容器,支持迭代協議(即定義有__iter__()函數),或者支持序列訪問協議(即定義有__getitem__()函數),否則會返回TypeError異常。

傳2個參數:當第二個參數sentinel出現時,參數callable應是一個可調用對象(實例),即定義了__call__()方法,當枚舉到的值等于哨兵時,就會拋出異常StopIteration。

>>> s='abc' #s支持序列訪問協議,它有__getitem__()方法>>> help(str.__getitem__)Help on wrapper_descriptor:__getitem__(...)  x.__getitem__(y) <==> x[y]>>> s.__getitem__(1)'b'>>> s[1]'b'>>> iters=iter(s) #iters是一個iterator對象,它有next()和__iter__()方法>>> iters1=iters.__iter__()>>> iters2=iter(iters)>>> iters<iterator object at 0x030612D0>>>> iters1<iterator object at 0x030612D0>>>> iters2<iterator object at 0x030612D0>iters iters1  iters2 是同一個迭代器?。?gt;>> iters.next()'a'>>> iters.next()'b'>>> iters.next()'c'>>> iters.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平邑县| 东乡族自治县| 鄄城县| 赫章县| 镶黄旗| 尼木县| 石台县| 富阳市| 阳春市| 靖州| 明溪县| 德格县| 德清县| 息烽县| 尼木县| 兴业县| 象州县| 侯马市| 大化| 余姚市| 商洛市| 苍梧县| 临海市| 从江县| 马山县| 黔南| 龙陵县| 民勤县| 仙居县| 金堂县| 高密市| 巫山县| 南郑县| 石嘴山市| 图们市| 安化县| 长武县| 民乐县| 岗巴县| 富源县| 榆林市|