標籤:相關 file 協議 分享 公式 符號 most 數組 ict
本節大綱
- 迭代器&產生器
- 裝飾器
- 基本裝飾器
- 多參數裝飾器
- 遞迴
- 演算法基礎:二分尋找、二維數群組轉換
- Regex
- 常用模組學習
- 作業:計算機開發
- 實現加減乘除及拓號優先順序解析
- 使用者輸入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等類似公式後,必須自己解析裡面的(),+,-,*,/符號和公式,運算後得出結果,結果必須與真實的計算機所得出的結果一致
迭代器&產生器
迭代器
迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍曆一些巨大的或是無限的集合,比如幾個G的檔案
特點:
- 訪問者不需要關心迭代器內部的結構,僅需通過next()方法不斷去取下一個內容
- 不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問
- 訪問到一半時不能往回退
- 便於迴圈比較大的資料集合,節省記憶體
產生一個迭代器:
>>> 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,作業:計算機開發