學Python必知的20個技巧,掌握它們,準沒錯

20 useful Python tips and tricks you should know. 以下為譯文,旨在幫助同學們更好地學習和應用Python。

Python作為當下較為流行的通用編程語言,主要用於數據科學和機器學習、許多領域的科學計算、後端網絡開發、移動和桌面應用等。哪些知名企業在Python:Google, Dropbox, Facebook, Mozilla, IBM, Quora, Amazon, Spotify, NASA, Netflix, Reddit等等。

Python不僅免費、開源,它還有一個由程序員和其他用戶組成的龐大、專注、友好的社區。

學Python必知的20個技巧,掌握它們,準沒錯

Python在設計上堅持清晰化一的風格,語法設計上更是側重於簡單、可讀和優雅。Python的作者有意的設計限制性很強的語法,使得不好的編程習慣都不能通過編譯。其中很重要的一項就是Python的縮進規則。本文介紹20個你可能用到的Python技巧和竅門。

01 Python之禪

“Python 之禪”又稱PEP 20,是用Tim Peters編寫的一個小文本,代表了設計和使用Python的指導原則。你可以在Python網站上找到這個文本,也可以在終端(控制檯)或Jupyter notebook中用一條語句獲取它:

學Python必知的20個技巧,掌握它們,準沒錯

02 鏈式賦值

如果需要多個變量引用同一個對象,可以使用鏈式賦值:

學Python必知的20個技巧,掌握它們,準沒錯

是不是很符合邏輯,又很優雅呢?

03 鏈式比較

通過鏈接比較運算符,可以將多個比較合併到一個Python表達式中。如果所有的比較都正確或錯誤,該表達式將返回true,否則返回false:

學Python必知的20個技巧,掌握它們,準沒錯

這類似於(2 < x)和(x ≤ 8)和(6 < x)和(x ≤ 8),但更緊湊,只需對x進行一次評估。

要知道這種編碼形式可是合法的:

學Python必知的20個技巧,掌握它們,準沒錯

你還可以鏈接兩個以上的比較:

學Python必知的20個技巧,掌握它們,準沒錯

04 多重賦值

你可以使用元組解包在一條語句中分配多個變量:

學Python必知的20個技巧,掌握它們,準沒錯

請注意,第一條語句中的2,4,8等同於元組(2,4,8)。

05 更高級的多重賦值

要知道Python能做到的遠不止普通的多重賦值。賦值的左側和右側不需要相同數量的元素:

學Python必知的20個技巧,掌握它們,準沒錯

這種情況下,x取第一個值(2 ),因為它是第一個出現的。z是最後一個,取最後一個值(8)。y取列表中的所有其他值,因為它有星號(*y)。


06 交換變量

你可以在應用多個賦值時以簡潔優雅的方式交換任意兩個變量,而無需引入第三個變量:

學Python必知的20個技巧,掌握它們,準沒錯

07 合併字典

合併兩個或更多字典的方法便是將它們放到一個新的字典中:

學Python必知的20個技巧,掌握它們,準沒錯

08 連接字符串

如果需要連接多個字符串,最終在它們之間有相同的字符或字符組,可以使用str.join()方法:

學Python必知的20個技巧,掌握它們,準沒錯

09 高級遍歷

如果你想要遍歷一個序列,並且需要序列元素和相應的索引,那麼應該可以使用enumerate:

學Python必知的20個技巧,掌握它們,準沒錯

在每次遍歷中,你將獲得一個元組,其中包含序列的索引和相應元素。

10 反向遍歷

若想反向遍歷序列,可以使用reversed:

學Python必知的20個技巧,掌握它們,準沒錯

11 元素聚合

如果要從幾個序列中聚合元素,應該使用zip:

學Python必知的20個技巧,掌握它們,準沒錯

可以通過遍歷獲得zip對象,或者將其轉換為列表或元組。

12 矩陣轉置

雖然在處理矩陣時通常會使用numpy(或類似的庫),但是使用zip同樣可以實現矩陣的轉置:

學Python必知的20個技巧,掌握它們,準沒錯

13 唯一值

如果元素的順序不重要,想從列表中刪除重複項,可以通過將其轉換為集合來獲得唯一值:

學Python必知的20個技巧,掌握它們,準沒錯

14 序列排序

默認情況下,序列按其第一個元素排序:

學Python必知的20個技巧,掌握它們,準沒錯

但是,如果要根據第二個(或其他)元素對它們進行排序,可以使用key鍵和適當的lambda函數作為相應的參數:

學Python必知的20個技巧,掌握它們,準沒錯

如果想獲得相反的順序,也可以使用相同的方法:

學Python必知的20個技巧,掌握它們,準沒錯

15 字典排序

可以使用類似的方法對獲得的字典的鍵值元組進行排序。items()方法:

學Python必知的20個技巧,掌握它們,準沒錯

他們是根據鍵排序的。如果希望根據它們的值排序,則應該指定對應於key的參數,並最終反轉:

學Python必知的20個技巧,掌握它們,準沒錯

16 格式化raw字符串

PEP 498和Python 3.6引入“格式化字符串”(f字符串)。你可以在這樣的字符串中嵌入表達式。要知道字符串可以直接用作raw字符串和格式化字符串使用,只需加上兩個前綴:fr。

學Python必知的20個技巧,掌握它們,準沒錯

17 獲取當前日期和時間

Python有一個內置的模塊datetime,可用於處理日期和時間。一種方法便是now(),返回當前日期和時間:

學Python必知的20個技巧,掌握它們,準沒錯

18 獲取最大/最小元素的索引

Python並未提供直接獲取列表或元組中最大或最小元素索引的函數。幸運的是,有兩種優雅的方法可以做到這一點:

學Python必知的20個技巧,掌握它們,準沒錯

如果有兩個或多個元素具有最大值,此方法將返回最後一個元素的索引:

學Python必知的20個技巧,掌握它們,準沒錯

如果想獲取第一次出現的索引,需要稍微更改一下前面的語句:

學Python必知的20個技巧,掌握它們,準沒錯

另一種方法可能更優雅呦!

學Python必知的20個技巧,掌握它們,準沒錯

要找到最小元素的索引,請使用函數min,記得不是max。

19 獲得笛卡爾積

內置模塊itertools提供了許多潛在有用的類。其中product函數便可用於獲得笛卡爾乘積:

學Python必知的20個技巧,掌握它們,準沒錯

20 矩陣乘法操作符

PEP 465和Python 3.5引入了用於矩陣乘法的專用運算符@。可以使用matmul、rmatmul和imatmul方法為你的類實現它。要知道使用該操作符進行向量或矩陣相乘非常優雅:

學Python必知的20個技巧,掌握它們,準沒錯

總結

你雖然已經看到20條Python技巧和竅門,讓代碼變得有趣而優雅。但還有很多其他語言特徵值得去探索。

Happy coding!


分享到:


相關文章: