【Python】迭代器

來源:互聯網
上載者:User

標籤:需要   協議   而不是   迴圈   效果   產生   對象   effect   產生器   

對迭代器和產生器的概念一直很混亂,總結一下:

迭代器:

1.所謂的迭代器,就是具有__next__()方法的對象;

2.__iter__()方法返回一個迭代器對象,這個對象必須具有__next__()方法;

3.一個實現了__iter__()方法的對象是可迭代的,一個實現了__next__()方法的對象是迭代器;

4.內建函數iter()從可迭代對象調用__iter__()方法,並返回一個迭代器對象;

5.內建函數next()調用__next__()方法,並向前推進;

6.for迴圈會自動調用內建函數iter(),獲得一個迭代器對象,使用__next__()方法;

7.檔案對象自己就是迭代器,產生器的迭代器也是自身,且產生器自動的支援迭代協議;

8.列表等內建對象自身不是迭代器,因為它們支援多次開啟迭代器,需要使用內建函數iter()啟動迭代器;

9.__iter__()只迴圈一次,之後還要使用需要建立新的迭代器

10.如果要達到多個迭代器的效果,__iter__()只需替迭代器定義新的狀態物件,而不是返回self

11.如果把迭代器對象傳給內建函數iter(),那麼此函數會把該迭代器返回;如果傳給iter()函數的是個容器類對象,那麼iter()函數則每次都會返回新的迭代器對象,可以利用這種行為判斷輸入值是不是迭代器對象本身。

參考資料:Python學習手冊

     Python Cookbook

     Effective Python

     Python基礎教程

 

【Python】迭代器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.