流暢的python和cookbook學習筆記(一),pythoncookbook

來源:互聯網
上載者:User

流暢的python和cookbook學習筆記(一),pythoncookbook
1.資料結構1.1 內建序列類型

  四種序列類型:

  1.容器序列:list、tuple和collections.deque

  2.扁平序列:str、bytes、bytearray、memoryview和array.array

  3.可變序列:list、bytearray、array.array、collections.deque 和 memoryview

  4.不可變序列:tuple、str 和 bytes

1.2 列表推導

  1.列表推導(list comprehension):列表推導是構建列表(list)的捷徑,簡潔的寫法。

  列表推導的作用只有一個:產生列表。

>>> symbols = '$¢£¥€¤' >>> codes = [ord(symbol) for symbol in symbols] # 用方括弧括起來,內部用for迴圈產生多個值>>> codes[36, 162, 163, 165, 8364, 164]

  2.運算式內部的變數和賦值只在局部起作用,運算式的上下文裡的同名變數還可以被正常引用,局部變數並不會影響到它們。

>>> x = 'ABC' >>> dummy = [ord(x) for x in x] >>> x 'ABC' >>> dummy  [65, 66, 67]

  即 x 的值不會被列表推導中的迴圈中的 x 值所影響。

1.3 產生器運算式

  1.產生式表達器(generator expression):產生器運算式遵守了迭代器協議,可以逐個地產出元素,而不是先建立一個完整的列表,然後再把這個列表傳遞到某個建構函式裡。這樣更節省記憶體。

  產生器運算式的文法跟列表推導差不多,只不過把方括弧換成圓括弧而已。

  用產生器運算式初始化元組和數組:

>>> symbols = '$¢£¥€¤' # 初始化元組>>> tuple(ord(symbol) for symbol in symbols) # 如果產生器運算式是一個函數調用過程中的唯一參數,那麼不需要額外再用括弧把它圍起來。(36, 162, 163, 165, 8364, 164) >>> import array # 初始化數組>>> array.array('I', (ord(symbol) for symbol in symbols)) # array 的構造方法需要兩個參數,因此括弧是必需的。array 構造方法的第一個參數,即('I')指定了數組中數位儲存方式。array('I', [36, 162, 163, 165, 8364, 164])
1.4 笛卡爾積 

  笛卡兒積是一個列表,列表裡的元素是由輸入的可迭代類型的元素對構成的元組,因此笛卡兒積列表的長度等於輸入變數的長度的乘積。

  1.使用列表推導計算笛卡兒積

>>> colors = ['black', 'white'] >>> sizes = ['S', 'M', 'L'] >>> tshirts = [(color, size) for color in colors for size in sizes] >>> tshirts 
[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')] >>> for color in colors: # 使用for迴圈是一樣的效果... for size in sizes: ... print((color, size)) ... ('black', 'S') ('black', 'M') ('black', 'L') ('white', 'S') ('white', 'M') ('white', 'L') >>> tshirts = [(color, size) for size in sizes for color in colors] # 改變參數位置,輸出順序不同>>> tshirts [('black', 'S'), ('white', 'S'), ('black', 'M'), ('white', 'M'), ('black', 'L'), ('white', 'L')]

  2.使用產生器運算式計算笛卡兒積

>>> colors = ['black', 'white']>>> sizes = ['S', 'M', 'L']>>> for tshirt in ('{} {}'.format(c, s) for c in colors for s in sizes):...     print(tshirt)...black Sblack Mblack Lwhite Swhite Mwhite L

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.