python--高級特性
*************** 高級特性 *****************
叠代
可以通過 for 循環來遍歷這個 list 或 tuple,這種遍歷我們稱為叠代(Iteration)只要是可叠代對象,無論有無下標,都可以叠代,比如 dict就可以叠代:
默認情況下,dict 叠代的是 key。如果要叠代 value,怎麽辦?
for k,v in d.iteritems():
print k,v
★判斷一個對象是可叠代對象,方法是通過 collections 模塊的 Iterable 類型判斷★判斷數據類型是否為可叠代數據類型:字符串,列表,集合,字典,元組是可叠代的,整型數字是不可叠代的。
列表生成式
列表生成式是Python 內置的非常簡單卻強大的可以用來創建 list的生成式
- 生成‘ABC’與‘123’的全排列;
- 生成字典的的內容,格式為‘key=value’,返回其列表格式;
- 將list中所有的字符串變為小寫字母 <參考:s.lower()>枚舉法引用變量:(enumerate)
fou循環引用變量:
生成器
通過列表生成式,我們可以直接創建一個列表,受到內存限制,列表容量肯定是有限的;創建一個包含 100 萬個元素的列表,占用很大的存儲空間;
在循環的過程中不斷推算出後續的元素呢?這樣就不必創建完整的 list,從而節省大量的空間。在 Python 中,這種一邊循環一邊計算的機制,稱為生成器(Generator)
怎麽創建生成器?把一個列表生成式的 [] 改成 ()
使用g.next()方法依次讀取元素(麻煩)
使用 for 循環(推薦)
理解生成器的實質,當無法通過列表生成式表述問題時,如何通過函數實現生成式的功能。
python編程:著名的斐波拉契數列(Fibonacci),除第一個和第二個數外,任意一個數都可由前兩個數相加得到:1, 1, 2, 3, 5, 8, 13, 21,...★fib 函數定義了斐波拉契數列的推算規則,可以從第一個元素開始,推算出後續任意的元素,邏輯非常類似 generator。要把 fib 函數變成 generator,只需要把print b 改為 yield b 就可以.生成器
★函數順序執行,遇return語句或最後一行函數語句就返回。
generator函數在每次調用next() 的時候執行,遇到 yield 語句返回,再次執行時從上次返回的yield 語句處繼續執行。[object Object]
# 4). 手動實現生成器
#定義一函數fib,實現斐波那契數列(Fibonicci):
# 1, 1, 2, 3, 5, 8, 13, 21..........
#
# def fib(n):
#
# 執行:fib(3) 輸出:1,1,2
# 執行:fib(4) 輸出:1,1,2,3
# 5).通過yield實現單線程的並發運算
# 異步I/O模型epoll http nginx tomcat程序:
測試; [object Object]
python--高級特性