python--高級特性

***************    高級特性   *****************

  1. 迭代
    可以通過 for 循環來遍歷這個 list 或 tuple,這種遍歷我們稱爲迭代(Iteration)只要是可迭代對象,無論有無下標,都可以迭代,比如 dict就可以迭代:
    默認情況下,dict 迭代的是 key。如果要迭代 value,怎麼辦?
    for k,v in d.iteritems():
    print k,v

    wKioL1lsj-qxxlW8AACvGbGG1zo364.png



    ★判斷一個對象是可迭代對象,方法是通過 collections 模塊的 Iterable 類型判斷

    ★判斷數據類型是否爲可迭代數據類型:字符串,列表,集合,字典,元組是可迭代的,整型數字是不可迭代的。

    wKioL1lsjdHQpM8FAAG2gJ3uocU970.png



  2. 列表生成式

    列表生成式是Python 內置的非常簡單卻強大的可以用來創建 list的生成式
        - 生成100以內所有偶數的平方;

    wKiom1lsj-qwWaADAAB2oeHyHSY812.png
        - 生成‘ABC’與‘123’的全排列;

    wKioL1lsj-nxN7MUAAApuaQn-3g651.png
        - 列出當前目錄下的所有文件和目錄名;     <參考:os.listdir(".")>
    wKioL1lsknjgEDziAACGoMWwVFw930.png
        - 生成字典的的內容,格式爲‘key=value’,返回其列表格式;

    wKiom1lsj-ngJq4eAABiS2zqDOM717.png
        - 將list中所有的字符串變爲小寫字母    <參考:s.lower()>


    wKiom1lsj-iw26DhAAB6fjvs1FE731.png

    枚舉法引用變量:(enumerate)

    wKiom1lsnWyQ6gRkAADLTenpsLM419.png

    fou循環引用變量:

    wKiom1lsnW2SsATPAADPtS6Zbq0551.png

  3. 生成器

    通過列表生成式,我們可以直接創建一個列表,受到內存限制,列表容量肯定是有限的;創建一個包含 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 語句處繼續執行。

    wKioL1lsnW-yAAbqAADBVPQHIbg157.png



  4. [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

    wKiom1lsnW7xEQ7wAADF2jW98XY940.png

    #   5).通過yield實現單線程的併發運算
    # 異步I/O模型epoll          http   nginx  tomcat
    wKiom1lsnXGi-GuoAAEVF6bcWkA995.png

    程序:
    wKioL1lsnXCBKp5QAAGLVVCTNoo770.png
測試;

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