程序員必知的 20 個 Python 技巧

作者 | Duomly

鏈接:https://dev.to/duomly/20-useful-python-tips-and-tricks-you-should-know-3h8c

程序員必知的 20 個 Python 技巧

Python是一門流行且應用廣泛的通用編程語言,其應用包括數據科學、機器學習、科學計算等領域,以及後端Web開發、移動和桌面應用程序等方面。許多知名的公司都使用Python,如Google、Dropbox、Facebook、Mozilla、IBM、Quora、Amazon、Spotify、NASA、Netflix、Reddit等。

Python是免費且開源的,與它有關的大多數產品也都是。此外,它擁有龐大、專注且友善的編程者和使用者社區。

它的語法設計目標就是簡單、易讀且優雅。

本文將向你展示20條非常實用的Python使用技巧。



Python之禪


Python之禪(又名PEP20)是由Tim Peters編寫的一小段文字,文中展示了設計和使用Python的指導原則。你可以在Python網站上找到這段文字,也可以在控制檯或Jupyter notebook中通過一條語句來顯示這段話。



鏈式賦值


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

非常有邏輯且優雅,對吧?

鏈式比較

多個比較語句也可以合成一個Python表達式,只需將多個比較運算符連起來即可。下面的表達式只有在所有比較都成立時返回True,否則返回False:

這個表達式相當於(2 < x)且 (x ≤ 8) 且 (x ≤ 8),但更為緊湊,而且只需執行一次x求值。

如下寫法也是正確的:

甚至可以將多個比較連起來:



多重賦值

你可以使用元組解包,在一條語句中給多個變量賦值:

注意第一條語句中的2, 4, 8相當於一個元組(2, 4, 8)。

更高級的多重賦值

Python的多重賦值遠不止於普通賦值。賦值左右兩側的元素數量甚至可以不一樣:

在這段代碼中,x對應於第一個值2,因為2是首先出現的。z是最後一個,所以取最後一個值8。y以列表形式取中間的所有值,因為它帶有星號(y*)。

交變量

利用多重賦值可以精確、優雅地交換任何兩個變量,而且無需引入第三個變量:




合併字典

合併兩個字典的方法之一就是將它們解包到一個新的字典中:





連接字符串

如果需要連接多個字符串,每個字符串之間使用同一個字符或同一組字符來連接,則可以使用str.join()方法:



高級遍歷

如果需要遍歷一個序列,同時還需要每個元素和相應的索引,則可以使用enumerate:

每次遍歷你都會獲得一個元組,其中包括索引值和對應的元素。

反向遍歷

如果你需要反向遍歷一個序列,則可以使用reversed:



元素結合

如果你需要將來自多個序列的元素結合起來,可以使用zip:

你可以遍歷返回的zip對象,或者將其變成一個列表或元祖。

矩陣轉置

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



唯一值

如果元素的順序不重要,那麼從列表中去除重複值的方法是將其轉換成一個集合,以獲得唯一的值:



序列排序

默認情況下序列按照第一個元素的順序排序:

但是,如果你希望按照第二個元素(或其他元素)排序,則可以使用key參數和適當的lambda函數作為第二個參數:

反向排序時也使用類似的方法:



字典排序

可以用類似方法,對字典的.items()方法返回的鍵值對進行排序:

它們按照鍵的順序進行排序。如果你希望按照值排序,則應該指定相應的key參數。反向排序也類似:



格式化raw字符串

PEP498和Python 3.6引入了“有格式字符串”的概念,或者稱為“f字符串”。這種字符串內部可以嵌入表達式。字符串可以同時作為raw字符串和有格式字符串使用,只需使用前綴fr:



獲取當前日期和時間

Python有一個內置的datetime模塊,非常適合各種涉及到日期和時間的任務。方法之一.now()能夠返回當前日期和時間:



獲取最大(或最小)元素的索引

Python沒有提供直接獲取最大(或最小)元素索引的函數。不過,至少有兩種方法可以優雅地實現這一點:

如果有兩個或多個元素都是最大值,那麼該方法返回最後一個的索引:

如果想獲取第一個,則可以對上面的語句稍作改動:

另一種方法可能更優雅:

如果想獲得最小元素的索引,則只需用min替換上面的max。

獲取笛卡爾積

內置的itertools模塊提供了許多非常實用的類。其中之一就是product函數,你可以通過這個函數來獲得笛卡爾積:



矩陣乘法操作符

PEP465和Python 3.5引入了專用的矩陣乘法運算符@。你可以在自己的類中實現matmul、rmatmul和imatmul來支持這個操作符。使用該操作符進行向量或矩陣乘法非常優雅:




分享到:


相關文章: