作者 | Duomly
鏈接:https://dev.to/duomly/20-useful-python-tips-and-tricks-you-should-know-3h8c
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來支持這個操作符。使用該操作符進行向量或矩陣乘法非常優雅:
閱讀更多 web小學員 的文章