摘要:都說 Python 簡單快捷,那本篇博客就為大家帶來一些實用的 Python 技巧,而且僅需要 1 行代碼,就可以解決一些小問題。 本文分享自華為雲社區《你猜 1 行Python代碼能幹什麼呢?神奇的單行 Python 代碼》,作者:夢想橡皮擦。 1 行代碼的由來 都說 Python 簡單快捷 ...
摘要:都說 Python 簡單快捷,那本篇博客就為大家帶來一些實用的 Python 技巧,而且僅需要 1 行代碼,就可以解決一些小問題。
本文分享自華為雲社區《你猜 1 行Python代碼能幹什麼呢?神奇的單行 Python 代碼》,作者:夢想橡皮擦。
1 行代碼的由來
都說 Python 簡單快捷,那本篇博客就為大家帶來一些實用的 Python 技巧,而且僅需要 1 行代碼,就可以解決一些小問題。
所有的 1 行代碼,全部依據標準的 Python 語言規範實現。
列表推導式
生成器語法絕對是 Python 帶給我們的優質語法糖,它可以基於現有的列表創建一個新的列表,而且語法格式簡單。
students = ["橡皮擦","橡皮擦大","大橡皮擦","夢想橡皮擦"] new_students = [name for name in students if name.startswith("橡皮")] print(new_students)
上述代碼的第二行,在原有列表中過濾出全新的列表,而且語法簡單,基於該語法結構,還有字典推導式,集合推導式相關知識點,都可以使用 1 行代碼完成目標需求,可以學習來。
合併字典
在 Python 實戰中,有時需要將兩個字典進行合併,最常用的是使用 update() 方法,或者 merge() 函數,當然也有工程師使用剛剛提及的字典推導式實現,那有沒有更加簡潔的寫法呢?可以看下述代碼
my_dict_1 = {'red': '紅色', 'green': '綠色'} my_dict_2 = {'blue': '藍色', 'yellow': '黃色'} merged_dict = {**my_dict_1, **my_dict_2} print(merged_dict)
其中 ** 符號是解包運算符,即將字典中的內容拆解,解包之後就可以參照上述代碼使用 {} 合併字典,當然也可以直接使用 dict() 函數進行合併
my_dict_1 = {'red': '紅色', 'green': '綠色'} my_dict_2 = {'blue': '藍色', 'yellow': '黃色'} merged_dict = dict(**my_dict_1, **my_dict_2) print(merged_dict)
如果你一時沒有轉換過來,那可以使用下述代碼進行轉換,即使用元素拼接技巧,先將字典轉換為 list,然後連接。
my_dict_1 = {'red': '紅色', 'green': '綠色'} my_dict_2 = {'blue': '藍色', 'yellow': '黃色'} merged_dict = dict(list(my_dict_1.items()) + list(my_dict_2.items())) print(merged_dict)
列表去重
在實戰中,也會碰到列表去重的情況,如果列表數據量不大,可以直接使用 set() 函數去重,即利用集合不允許包含重覆值這一特性。
names = ["橡皮擦","橡皮擦大","大橡皮擦","夢想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","夢想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","夢想橡皮擦","橡皮擦","橡皮擦大","大橡皮擦","夢想橡皮擦"]
un_list = list(set(names)) print(un_list)
一行代碼交換變數值
這也是 Python 中的語法糖了,在做排序類演算法時經常碰到,使用一行代碼進行變數值的交換。
a = 1 b = 2 a, b = b, a print(a, b)
在此基礎上,可以擴展到更多變數,此時還會衍生出另一個一行代碼知識點,即一行代碼為多個變數賦值,示例代碼如下所示:
a, b, c, d = 1, 2, 3, 4 (a, b), (c, d) = (b, a), (d, c) print(a, b, c, d)
利用 print 輸出日誌到文件
編寫代碼經常要測試輸出結果,因此會大量的使用到 print 函數,而這些結果預設會輸出到控制台,關閉程式運行之後,結果就消失了,實踐中,可以利用一下 print 函數的第二個參數,實現將輸出寫入到文件中。
print("Hello, World!", file=open('ca.txt', 'w'))
轉置矩陣
對矩陣進行轉置,也可以使用一行代碼實現。
old_list = [[1, 2], [3, 4]] print(list(zip(*old_list)))
但上述代碼會將列表轉換成元組,如果不希望該情況出現,可以使用下述代碼,依舊是一行。
old_list = [[1, 2], [3, 4]] print(list(list(x) for x in zip(*old_list)))
一行喪心病狂的代碼
除了正常的操作外,在 Python 中還能實現一些神奇的操作,例如下述代碼:
print(eval(input()))
可以輸入單行代碼,然後直接輸出結果!
該代碼最佳的實踐是一行代碼實現一個計算器。