高級特性(20160811).md


  1. 切片
    1. Python提高切片操作符
  2. 迭代
    1. 在給定list或tuple,我們可以通過for循環來遍歷。
    2. Python的for循環抽象程度高於Java。
    3. 如何判斷一個對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷

python
>from collections import Iterable
>isinstance('abc', Iterable)
>

  • 列表生成式
    1. 列表生成式可以用更短的代碼達到循環的效果。
    2. 寫列表生成式時,把要生成的元素x * x放到前面,後面跟for循環,就可以把list創建出來
    3. for循環後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:
      python
      >[x*x for x in range(1,11) if x%2 == 0]
      >[4,16, 36, 64, 100]
      >
    4. 還可以使用兩層循環
      python
      >[m+n for m in 'ABC' for n in 'XYZ']
      >['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
      >
  • 生成器
    1. 如果列表元素可以按照某種算法推算出來,從而節省大量的空間。這種一邊循環一邊計算的機制,稱爲生成器:generator。
    2. 創建Lg的區別僅在於最外層的[]()L是一個list,而g是一個generator。
    3. 打印生成器函數可以使用next(),獲取下一個返回值。
    4. generator保存的是算法,每次調用next(),就計算下一個元素的值,可使用for循環
    5. 如果一個函數定義中包含yield關鍵字,那麼這個函數就不再是一個普通函數,而是一個generator
  • 小結
    1. 凡是可作用於for循環的對象都是Iterable類型;
    1. 凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;
    1. 集合數據類型如listdictstr等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。

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