python學習7-------高級特性

### 函數高級特性 ###


一.迭代

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)


2)

練習題:
python編程:著名的斐波拉契數列(Fibonacci),除第一個和第二個數外,任意一個數都可由前兩個數相加得到:1, 1, 2, 3, 5, 8, 13, 21,...生成器fib 函數定義了斐波拉契數列的推算規則,可以從第一個元素開始,推算出後續任意的元素,邏輯非常類似 generator。
要把 fib 函數變成 generator,只需要把print b 改爲 yield b 就可以.生成器
示圖:非生成器式

示圖:生成器式

•函數順序執行,遇return語句或最後一行函數語句就返回。

•generator函數在每次調用next() 的時候執行,遇到 yield 語句返回,再次執行時從上次返回的yield 語句處繼續執行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章