1. 程式人生 > 其它 >可迭代物件+迭代器物件+異常捕獲

可迭代物件+迭代器物件+異常捕獲

可迭代物件+迭代器物件+異常捕獲

一、常用內建函式

1. 對映 map()

迴圈獲取列表中每個元素並傳遞給匿名函式儲存返回值

2.拉鍊 zip()

# for迴圈先取值 之後再比較大小

上圖中,可更換容器型別輸出,但是輸出後,記憶體就沒有值了,再同容器型別輸出就是空的了。

3.最大值、最小值 max() min()

4. 過濾 filter()

5. 歸總 reduce()

還可以額外新增元素值

二、可迭代物件

迭代的定義:迭代即更新換代 每次的更新都必須依賴於上一次的結果,迭代其實給我們提供了一種不依賴索引取值的方式

可迭代物件:內建有__iter__方法的都稱之為可迭代物件,內建的意思是可以通過點的方式直接檢視到的

要想了解迭代器為

何物,必須事先搞清楚一個很重要的概念:可迭代物件(iterable)。從語法形式上講,內建有_ _ iter_ _方法的物件都是可迭

代物件,字串、列表、字典、元組、集合、檔案物件都是可迭代物件:

PS:針對雙下滑線開頭 雙下滑線結尾的方法 最為專業標準的讀法為:“雙下方法名” eg:d.__iter__()

每一次對過程的重複稱為一次“迭代”,而每一次迭代得到的結果會作為下一次迭代的初始值,單純的重複並不是迭代

上圖:以每次重新賦值後的index值作為下一次迴圈中新的索引進行取值,反覆迭代,最終可以取盡列表中的值

可迭代物件呼叫__iter__方法會變成迭代器物件(老母豬)

__iter__方法在呼叫的時候還有一個簡便的寫法iter() 一般情況下所有的雙下方法都會有一個與之對應的簡化版本 方法名()

三、迭代器物件

迭代器物件:即含有__iter__方法 又含有__next__方法即含有__iter__方法 又含有__next__方法,如何生成迭代器物件,讓可迭代物件執行__iter__方法。

檔案物件本身即是可迭代物件又是迭代器物件,迭代器物件無論執行多少次__iter__方法 還是迭代器物件(本身)

迭代器是Python提供的一種統一的、不 依賴於索引的迭代取值方式,只要存在多個“值”,無論序列型別還是非序列型別都可以按照迭代器的方式取值

四、for迴圈的本質

有了迭代器後,我們便可以不依賴索引迭代取值了,使用while迴圈的實現方式如下

for迴圈又稱為迭代迴圈,in後可以跟任意可迭代物件,上述while迴圈可以簡寫為:

五、迭代器的優缺點

基於索引的迭代取值,所有迭代的狀態都儲存在了索引中,而基於迭代器實現迭代的方式不再需要索引,所有迭代的狀態就儲存在迭代器中,然而這種處理方式優點與缺點並存

  • 優點:

    1. 為序列和非序列型別提供了一種統一的迭代取值方式;
    2. 惰性計算:迭代器物件表示的是一個數據流,可以只在需要時才去呼叫next()來計算出一個值;就迭代器本身來說,同一時刻在記憶體中只有一個值,因而可以存放無限大的資料流,而對於其他容器型別,如列表,需要把所有的元素都存放於記憶體中,受記憶體大小的限制,可以存放的值的個數是有限的。
  • 缺點:

    1. 除非取盡,否則無法獲取迭代器的長度;
    2. 只能取下一個值,不能回到開始,更像是“一次性的”,迭代器產生後的唯一目標就是重複執行next()方法直到值取盡,否則就會停留在某個位置,等待下一次呼叫next();若是要再次迭代同個物件,你只能重新呼叫iter()方法去建立一個新的迭代器物件,如果有兩個或者多個迴圈使用同一個迭代器,必然只會有迴圈能取到值。

六、異常捕獲

# 什麼是異常
    程式碼執行出錯會導致異常 異常發生後如果沒有解決方案則會到底整個程式結束
 
# 異常三個重要組成部分
    1.traceback
        翻到最下面從下往上的第一個藍色字型滑鼠左鍵點選即可跳轉到錯誤的程式碼所在的行
    2.XXXError
        錯誤的型別
    3.錯誤型別冒號後面的內容
        錯誤的詳細原因(很重要 仔細看完之後可能就會找到解決的方法)
# 錯誤的種類
    1.語法錯誤
        不被允許的 出現了應該立刻修改!!!
    2.邏輯錯誤
        可以被允許的 出現了之後儘快修改即可
           '''修改邏輯錯誤的過程其實就是在從頭到尾理清思路的過程'''

1. 語法錯誤

2.另一種就是邏輯錯誤,出現了之後儘快修改即可

基本語法結構

基本語法結構
    try:
        有可能會出錯的程式碼
    except 錯誤型別 as e:
        出錯之後對應的處理機制(e是錯誤的詳細資訊)
    except 錯誤型別 as e:
        出錯之後對應的處理機制(e是錯誤的詳細資訊)
    except 錯誤型別 as e:
        出錯之後對應的處理機制(e是錯誤的詳細資訊)

對應錯誤的公式如下:

萬能公式如下:

1 # 萬能異常
2 try:
3     # int('abc')
4     print(name)
5     # l = [11]
6     # l[100]
7 except Exception:
8     print('你來啥都行 無所謂')
萬能公式