機器之心整理,作者:Laurent Pointal,參與:思源、劉曉坤。
今天要介紹的 Python 3 Cheat Sheet 由法國國家科學研究中心(CNRS)的法國機械工程與資訊科技實驗室(LIMSI)的工程師 Laurent Pointal 總結。這個簡單的 Cheat Sheet 專注於從演算法/程式設計開始所必需的語言部分,提供了學生入門所需的一般資訊。注意:它不涉及物件導向的程式設計。
Python 3 Cheat Sheet 一共包含兩頁,分成了多個框圖,涉及基本的 Python 資料結構、數學運算、條件和迴圈語句、檔案讀寫,以及異常值處理等。在每個框圖中,右上角是型別名稱,藍色和紅色字型是該型別包含的關鍵字,綠色字型是示例,黑色斜體字提供更詳細的資訊。
Python3 的基本資料型別和資料結構型別:
資料型別:整型(int)、浮點型(float)、布林型(bool)、字串(str)、二進位制位元組序列數(含二進位制數、八進位制數、十六進位制數,bytes)等。
資料結構型別包含有序序列和鍵值容器。有序序列包含列表、元組和字串等,其中列表和元組的重要區別是前者可變,後者不可變,列表主要用於儲存同構資料,元組主要用於儲存異構資料;鍵值容器沒有預先設定順序,可以通過訪問鍵快速查詢值,包含字典、集合等。
識別符號:用於代表變數、函式、模組、類等的名稱。注意儘量避免使用讀音符號,不要使用 Python3 中的關鍵字,Python3 的識別符號是區分大小寫的,框圖中分別列出了允許和不允許的識別符號示例。
變數賦值:賦值也就是為變數賦予具體的值,等號左側是變數名,右側是值。如果右側存在變數,可以看成是函式;可以將同一個值賦予多個變數;可以將多個值分別賦予多個變數;可以交換兩個變數的值;可以用於表示迴圈語句,等。
型別轉換:將資料從某一個資料型別轉換為另一個資料型別,或將某一個資料結構轉換為另一個資料結構。可以將表示式總結為 type(expression),其中 type 是目標轉換型別,expression 是要轉換的資料或資料結構。此外,也可以用更具體的句式轉換列表的格式,或者對列表中的每個資料同時轉換資料型別。
序列容器索引:用於列表、元組、字串、bytes 的資料排序。可以使用正索引,也可以使用負索引。定義了索引之後,可以方便地對容器的資料進行訪問、賦值(可變數)等操作,資料訪問/賦值可以用於單個資料,也可以用於多個資料,並能指定間隔、順序/倒序等。
第一頁剩餘部分還包括:布林邏輯、宣告的模組結構、模組匯入操作、數學運算、條件宣告語句結構以及異常案例處理語句。
迴圈語句是程式語言中最核心的語句之一,如下在第二頁所示在 Python 中主要有 while 迴圈與 for 迴圈。其中 While 迴圈需要一個「迴圈條件」,如果它為真,則繼續迭代。而對於 For 循,我們可以把變數「var」應用需要迴圈的程式碼塊中,「for」語句會迭代地從 seqence 中抽取它。注意這兩個迴圈還會有控制語句,即立即從迴圈體跳出的 break 命令和跳過當前迴圈剩餘語句並進入下一個迴圈的 continue 語句。
注意 for 迴圈需要可迭代目標,即列表、元組和字串等,只有這樣才能從它們中抽取元素。此外,for ... in range() 語句可以通過數值進行迭代,例如從 0 增加到 9 等。在上圖還展示了 print() 函式和 input() 函式,其中 print() 函式可以列印字串、變數和表示式。
Python 提供了非常多的內嵌運算函式,包括對數值變數的運算和各種資料結構的操作。如下展示了對列表、字典、集合和一般資料結構的操作方法,後面還繼續展示了字串或元組的操作。例如在一般資料結構的操作中,len() 函式可能是最常見的方法,它可以用來統計不同資料結構中元素的數量。例如如果一個列表中儲存了所有神經元的輸出值,那麼我們可以使用 len() 統計神經元的數量,並用 for 迴圈依次訪問不同的神經元。
後面的列表、字典和集合操作都非常重要,它們在機器學習及一般程式設計中都十分常見。例如在列表運算中,append() 方法會在列表的尾部新增新的元素,extend() 方法會將另外一個序列新增到列表的末尾,而 pop() 方法會移除列表中的一個元素(預設最後一個元素),並且返回該元素的值。列表資料結構還有其它很多方法,包括移除 remove()、排序 sort() 和統計 count() 等。
除了列表外,字典是另外一種很重要的資料結構,如果我們需要迭代地給神經網路不同層級的引數命名,那麼很可能就需要藉助字典資料結構。通過字典,我們可以使用數值型、字元型或其它型別的索引。字典的每個鍵值 (key=>value) 對用冒號 (:) 分割,每個對之間用逗號 (,) 分割,整個字典包括在花括號 ({}) 中。
字典同樣也有非常多的方法,如上所示刪除字典內所有元素的 clear() 方法、以列表返回可遍歷的(鍵,值)元組的 items() 方法,以及把字典 d2 的鍵/值對更新到 d 裡面的 update(d2) 方法。
下面備忘錄中最重要的就是函式的定義和呼叫了,這在大多數程式語言中都是很核心的模組。函式的定義與呼叫都非常簡單,這張表也只是展示了基本概念。此外,在這一張備忘錄中,它並沒有介紹類與例項等物件導向的程式設計方法。
最後是檔案讀寫、字串操作與字串的格式化操作。其中檔案讀寫在讀寫資料中是很常用的,當然我們也可以用 Pandas 等庫實現更高效的讀寫方法。在對檔案進行處理過程中,open() 方法用於開啟一個檔案,並返回檔案物件,如果該檔案無法被開啟,會丟擲 OSError。開啟檔案並執行某些操作後,一般我們都需要使用 write() 方法將字串寫入檔案。每次開啟一個檔案,並完成讀寫後,我們必須使用 close() 關閉檔案。
最後,兩頁完整的 Pyhon 3 備忘錄展示如下,如果需要更清晰的 PDF 版,讀者可點選「閱讀原文」查閱。