忘了Python關(guān)鍵語句?這份備忘錄拯救你的記憶
今天要介紹的 Python 3 Cheat Sheet 由法國國家科學研究中心(CNRS)的法國機械工程與信息技術(shù)實驗室(LIMSI)的工程師 Laurent Pointal 總結(jié)。這個簡單的 Cheat Sheet 專注于從算法/編程開始所必需的語言部分,提供了學生入門所需的一般信息。注意:它不涉及面向?qū)ο蟮木幊獭?/p>
Python 3 Cheat Sheet 一共包含兩頁,分成了多個框圖,涉及基本的 Python 數(shù)據(jù)結(jié)構(gòu)、數(shù)學運算、條件和循環(huán)語句、文件讀寫,以及異常值處理等。在每個框圖中,右上角是類型名稱,藍色和紅色字體是該類型包含的關(guān)鍵字,綠色字體是示例,黑色斜體字提供更詳細的信息。
- pdf 地址:https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf
- 項目地址:https://perso.limsi.fr/pointal/python:memento

Python3 的基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)類型:
數(shù)據(jù)類型:整型(int)、浮點型(float)、布爾型(bool)、字符串(str)、二進制字節(jié)序列數(shù)(含二進制數(shù)、八進制數(shù)、十六進制數(shù),bytes)等。
數(shù)據(jù)結(jié)構(gòu)類型包含有序序列和鍵值容器。有序序列包含列表、元組和字符串等,其中列表和元組的重要區(qū)別是前者可變,后者不可變,列表主要用于存儲同構(gòu)數(shù)據(jù),元組主要用于存儲異構(gòu)數(shù)據(jù);鍵值容器沒有預先設(shè)置順序,可以通過訪問鍵快速查找值,包含字典、集合等。

標識符:用于代表變量、函數(shù)、模塊、類等的名稱。注意盡量避免使用讀音符號,不要使用 Python3 中的關(guān)鍵字,Python3 的標識符是區(qū)分大小寫的,框圖中分別列出了允許和不允許的標識符示例。
變量賦值:賦值也就是為變量賦予具體的值,等號左側(cè)是變量名,右側(cè)是值。如果右側(cè)存在變量,可以看成是函數(shù);可以將同一個值賦予多個變量;可以將多個值分別賦予多個變量;可以交換兩個變量的值;可以用于表示循環(huán)語句,等。
類型轉(zhuǎn)換:將數(shù)據(jù)從某一個數(shù)據(jù)類型轉(zhuǎn)換為另一個數(shù)據(jù)類型,或?qū)⒛骋粋€數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為另一個數(shù)據(jù)結(jié)構(gòu)。可以將表達式總結(jié)為 type(expression),其中 type 是目標轉(zhuǎn)換類型,expression 是要轉(zhuǎn)換的數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。此外,也可以用更具體的句式轉(zhuǎn)換列表的格式,或者對列表中的每個數(shù)據(jù)同時轉(zhuǎn)換數(shù)據(jù)類型。

序列容器索引:用于列表、元組、字符串、bytes 的數(shù)據(jù)排序。可以使用正索引,也可以使用負索引。定義了索引之后,可以方便地對容器的數(shù)據(jù)進行訪問、賦值(可變量)等操作,數(shù)據(jù)訪問/賦值可以用于單個數(shù)據(jù),也可以用于多個數(shù)據(jù),并能指定間隔、順序/倒序等。
***頁剩余部分還包括:布爾邏輯、聲明的模塊結(jié)構(gòu)、模塊導入操作、數(shù)學運算、條件聲明語句結(jié)構(gòu)以及異常案例處理語句。

循環(huán)語句是編程語言中最核心的語句之一,如下在第二頁所示在 Python 中主要有 while 循環(huán)與 for 循環(huán)。其中 While 循環(huán)需要一個「循環(huán)條件」,如果它為真,則繼續(xù)迭代。而對于 For 循,我們可以把變量「var」應用需要循環(huán)的代碼塊中,「for」語句會迭代地從 seqence 中抽取它。注意這兩個循環(huán)還會有控制語句,即立即從循環(huán)體跳出的 break 命令和跳過當前循環(huán)剩余語句并進入下一個循環(huán)的 continue 語句。

注意 for 循環(huán)需要可迭代目標,即列表、元組和字符串等,只有這樣才能從它們中抽取元素。此外,for ... in range() 語句可以通過數(shù)值進行迭代,例如從 0 增加到 9 等。在上圖還展示了 print() 函數(shù)和 input() 函數(shù),其中 print() 函數(shù)可以打印字符串、變量和表達式。
Python 提供了非常多的內(nèi)嵌運算函數(shù),包括對數(shù)值變量的運算和各種數(shù)據(jù)結(jié)構(gòu)的操作。如下展示了對列表、字典、集合和一般數(shù)據(jù)結(jié)構(gòu)的操作方法,后面還繼續(xù)展示了字符串或元組的操作。例如在一般數(shù)據(jù)結(jié)構(gòu)的操作中,len() 函數(shù)可能是最常見的方法,它可以用來統(tǒng)計不同數(shù)據(jù)結(jié)構(gòu)中元素的數(shù)量。例如如果一個列表中儲存了所有神經(jīng)元的輸出值,那么我們可以使用 len() 統(tǒng)計神經(jīng)元的數(shù)量,并用 for 循環(huán)依次訪問不同的神經(jīng)元。

后面的列表、字典和集合操作都非常重要,它們在機器學習及一般編程中都十分常見。例如在列表運算中,append() 方法會在列表的尾部添加新的元素,extend() 方法會將另外一個序列添加到列表的末尾,而 pop() 方法會移除列表中的一個元素(默認***一個元素),并且返回該元素的值。列表數(shù)據(jù)結(jié)構(gòu)還有其它很多方法,包括移除 remove()、排序 sort() 和統(tǒng)計 count() 等。
除了列表外,字典是另外一種很重要的數(shù)據(jù)結(jié)構(gòu),如果我們需要迭代地給神經(jīng)網(wǎng)絡(luò)不同層級的參數(shù)命名,那么很可能就需要借助字典數(shù)據(jù)結(jié)構(gòu)。通過字典,我們可以使用數(shù)值型、字符型或其它類型的索引。字典的每個鍵值 (key=>value) 對用冒號 (:) 分割,每個對之間用逗號 (,) 分割,整個字典包括在花括號 ({}) 中。
字典同樣也有非常多的方法,如上所示刪除字典內(nèi)所有元素的 clear() 方法、以列表返回可遍歷的(鍵,值)元組的 items() 方法,以及把字典 d2 的鍵/值對更新到 d 里面的 update(d2) 方法。
下面?zhèn)渫浿凶钪匾木褪呛瘮?shù)的定義和調(diào)用了,這在大多數(shù)編程語言中都是很核心的模塊。函數(shù)的定義與調(diào)用都非常簡單,這張表也只是展示了基本概念。此外,在這一張備忘錄中,它并沒有介紹類與實例等面向?qū)ο蟮木幊谭椒ā?/p>

***是文件讀寫、字符串操作與字符串的格式化操作。其中文件讀寫在讀寫數(shù)據(jù)中是很常用的,當然我們也可以用 Pandas 等庫實現(xiàn)更高效的讀寫方法。在對文件進行處理過程中,open() 方法用于打開一個文件,并返回文件對象,如果該文件無法被打開,會拋出 OSError。打開文件并執(zhí)行某些操作后,一般我們都需要使用 write() 方法將字符串寫入文件。每次打開一個文件,并完成讀寫后,我們必須使用 close() 關(guān)閉文件。

***,兩頁完整的 Pyhon 3 備忘錄展示如下,如果需要更清晰的 PDF 版,讀者可點擊「閱讀原文」查閱。

