Python 迭代器&產生器,裝飾器,遞迴,演算法基礎:二分尋找、二維數群組轉換,Regex,作業:計算機開發

來源:互聯網
上載者:User

標籤:相關   file   協議   分享   公式   符號   most   數組   ict   

本節大綱
  1. 迭代器&產生器
  2. 裝飾器 
    1. 基本裝飾器
    2. 多參數裝飾器
  3. 遞迴
  4. 演算法基礎:二分尋找、二維數群組轉換
  5. Regex
  6. 常用模組學習
  7. 作業:計算機開發
    1. 實現加減乘除及拓號優先順序解析
    2. 使用者輸入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等類似公式後,必須自己解析裡面的(),+,-,*,/符號和公式,運算後得出結果,結果必須與真實的計算機所得出的結果一致
迭代器&產生器

迭代器

迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍曆一些巨大的或是無限的集合,比如幾個G的檔案

特點:

  1. 訪問者不需要關心迭代器內部的結構,僅需通過next()方法不斷去取下一個內容
  2. 不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問
  3. 訪問到一半時不能往回退
  4. 便於迴圈比較大的資料集合,節省記憶體

產生一個迭代器:

>>> a = iter([1,2,3,4,5])>>> a<list_iterator object at 0x101402630>>>> a.__next__()>>> a.__next__()>>> a.__next__()>>> a.__next__()>>> a.__next__()>>> a.__next__()Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration

反覆調用iterator的__next__()方法(或將其傳遞到內建函數next())返迴流中的連續項。當沒有更多的資料可用時,就會提出stop迭代異常。此時,迭代器對象已經耗盡,對其__next__()方法的任何進一步調用都將再次引發停止迭代。

在Python中,很多個物件都是可以通過for語句來直接遍曆的,例如list、string、dict等等,這些對象都可以被稱為可迭代對象。至於說哪些對象是可以被迭代訪問的,就要瞭解一下迭代器相關的知識了。

迭代器
迭代器對象要求支援迭代器協議的對象,在Python中,支援迭代器協議就是實現對象的__iter__()和next()方法。其中__iter__()方法返回迭代器對象本身;next()方法返回容器的下一個元素,在結尾時引發StopIteration異常。

__iter__()和next()方法
這兩個方法是迭代器最基本的方法,一個用來獲得迭代器對象,一個用來擷取容器中的下一個元素。
對於可迭代對象,可以使用內建函數iter()來擷取它的迭代器對象:

例子中,通過iter()方法獲得了list的迭代器對象,然後就可以通過next()方法來訪問list中的元素了。當容器中沒有可訪問的元素後,next()方法將會拋出一個StopIteration異常終止迭代器。
其實,當我們使用for語句的時候,for語句就會自動的通過__iter__()方法來獲得迭代器對象,並且通過next()方法來擷取下一個元素。

 

Python 迭代器&產生器,裝飾器,遞迴,演算法基礎:二分尋找、二維數群組轉換,Regex,作業:計算機開發

聯繫我們

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