### 函數高級特性 ###
一.迭代
1.定義:可以通過 for 循環來遍歷這個 list 或 tuple,這種遍歷稱爲迭代(Iteration)2.判斷是否爲可迭代對象
通過 collections 模塊的 Iterable 類型判斷
示圖:判斷元組,字典,列表,字符,整形等是否爲可迭代類型
3.枚舉
枚舉方法enumerate,把一個 list 變成索引元素對
示圖:
4.多個元素迭代顯示
示圖:
二.列表生成式
1.定義實例:
要生成 list [1, 2, 3, 4, 5, 6, 7] 可以用 range(1, 8)
但如果要生成 [1x1, 2x2, 3x3, ..., 7x7] 怎麼做?
方法一:定義函數
方法二:列表生成式
示圖:
2.列表生成式可以嵌套if語句和for語句
練習題:1)生成100以內所有偶數的平方;
2)生成‘ABC’與‘123’的全排列;
3)列出當前目錄下的所有文件和目錄名<參考:os.listdir(".")>
3.列表生成式也可以使用兩個變量來生成 list
練習題:
1)生成字典的的內容,格式爲‘key=value’,返回其列表格式;
2)將list中所有的字符串變爲小寫字母<參考:s.lower()>
三.生成器
1.作用•通過列表生成式,我們可以直接創建一個列表,受到內存限制,列表容量肯定是有限的;
•創建一個包含 100 萬個元素的列表,佔用很大的存儲空間
2.定義
• 在循環的過程中不斷推算出後續的元素,這樣就不必創建完整的 list,從而節省大量的空間。在 Python 中,這種一邊循環一邊計算的機制,稱爲生成器(Generator)
3.創建
把一個列表生成式的 [] 改成 ()
1)使用g.next()方法依次讀取元素(麻煩)
2)使用 for 循環(推薦)
示圖:
1)
練習題:
python編程:著名的斐波拉契數列(Fibonacci),除第一個和第二個數外,任意一個數都可由前兩個數相加得到:1, 1, 2, 3, 5, 8, 13, 21,...生成器fib 函數定義了斐波拉契數列的推算規則,可以從第一個元素開始,推算出後續任意的元素,邏輯非常類似 generator。
要把 fib 函數變成 generator,只需要把print b 改爲 yield b 就可以.生成器
示圖:非生成器式
示圖:生成器式
•函數順序執行,遇return語句或最後一行函數語句就返回。
•generator函數在每次調用next() 的時候執行,遇到 yield 語句返回,再次執行時從上次返回的yield 語句處繼續執行