python學習——可迭代對象與迭代器對象及建立迭代器的三種方式

來源:互聯網
上載者:User

python 可迭代對象——Iterable

Python中經常使用for來對某個對象進行遍曆,此時被遍曆的這個對象就是可迭代對象,像常見的list、tuple、dict、set、str都是。如果給一個準確的定義的話,就是只要它定義了可以返回一個迭代器的iter方法,或者定義了可以支援下標索引的getitem方法,那麼它就是一個可迭代對象。

python 迭代器對象——Iterator

迭代器是通過next()來實現的,每調用一次他就會返回下一個元素,當沒有下一個元素的時候返回一個StopIteration異常,所以實際上定義了這個方法的都算是迭代器。迭代器一定是可迭代對象,反過來則不一定成立。用iter()函數可以把list、dict、str等Iterable變成Iterator

下面通過建立一個迭代器對象來說明:
建立一個Reverse對象,將序列中的對象進行翻轉。

class Reverse(object):    def __init__(self, data):        self.data = data        self.index = len(data)    def __iter__(self):        return self    def __next__(self):        if self.index == 0:            raise StopIteration        self.index -= 1        return self.data[self.index]rev = Reverse([1,2,3,4,5])for x in rev:    print(x)

得到結果:

54321

在進行for迴圈時,首先調用iter()方法,得到一個迭代器對象,然後調用該迭代器對象的next()方法,每次返回一個值。

——————————————————————————

建立迭代器的三種方式:

1、定義一個容器,並添加iter()和next()方法(python 2中為next()方法);iter()返回迭代器對象本身,next()返回每次調用 next() 或迭代時的元素;

2、通過iter()將可迭代對象轉換為迭代器;

3、產生器。產生器通過yield語句快速產生迭代器,省略了複雜的iter()和next()方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.