十個驚艷的Pythonic單行代碼
自從我用 Python 編寫第一行代碼以來,我就被它的簡單性、出色的可讀性和流行的單行代碼所吸引。在下文中,我想介紹和解釋其中的一些單行代碼——也許有一些你還不知道並且對你的下一個 Python 項目很有用。
1.交換兩個變量
# a = 1; b = 2 a, b = b, a # print(a,b) >> 2 1
我們從經典開始:通過簡單地交換賦值位置來交換變量的值——我認為這是最直觀的方式。無需使用臨時變量。它甚至適用於兩個以上的變量。
2.多變量賦值
a, b, *c = [1,2,3,4,5] # print(a,b,c) >> 1 2 [3, 4, 5]
交換變量實際上是 Python 一次分配多個變量的能力的一個特例。在這裡你可以使用它來將列表元素分配給給定的變量,這也稱為拆包。將*
再次打包剩餘的值,這會產生一個子列表c
。它甚至適用於每個其他位置*
(例如列表的開頭或中間部分)。
3. 對列表的每個第二個元素求和
# a = [1,2,3,4,5,6] s = sum(a[1::2]) # print(s) >> 12
這裡不需要特殊的 reduce 函數,sum
隻需添加每個給定 iterable 的項目。此處使用擴展切片語法 [::]
來返回每隔一個元素。你可以將其讀作 [start : stop : step]
,因此[1::2]
轉換為從索引 1 的元素(第二個元素)開始,直到列表結束才停止(沒有為第二個參數提供參數)並且始終采取 2 steps。
4.刪除多個元素
# a = [1,2,3,4,5] del a[::2] # print(a) >> [2, 4]
擴展的切片語法也可用於一次刪除多個列表元素。
5. 將文件讀入行數組
c = [line.strip() for line in open('file.txt')] # print(c) >> ['test1', 'test2', 'test3', 'test4']
使用 Python 的內聯 for 循環,你可以輕松地將文件讀入行數組。strip()
需要刪除尾隨換行符。如果你想保留它們或者它們對你來說無關緊要,你可以使用更短的單線:
c = list(open('file.txt')) # print(c) >> ['test1\n', 'test2\n', 'test3\n', 'test4\n']
用 Python 讀取文件真的就是這麼簡單。旁註:你也可以根據需要使用該readlines()
方法。
6. 將字符串寫入文件
with open('file.txt', 'a') as f: f.write('hello world') # print(list(open('file.txt'))) >> ['test1\n', 'test2\n', 'test3\n', 'test4\n', 'hello world']
借助with
語句,你可以直接將內容寫入文件。確保使用正確的模式打開文件(此處'a'
為附加內容)。
7. 列表創建
l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']] # print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
可以使用內聯 for 循環從其他列表動態創建列表。你可以直接修改值,如本例中的字符串連接。
8.列表映射
l = list(map(int, ['1', '2', '3'])) # print(l) >> [1, 2, 3]
你還可以使用 Pythonmap()
函數將每個列表元素轉換為另一種類型。
9. 創建集合
squares = { x**2 for x in range(6) if x < 4 } # print(squares) >> {0, 1, 4, 9}
它與sets相似,除瞭內聯 for 循環,你甚至可以直接附加條件!
10.回文檢查
# phrase = 'deleveled' isPalindrome = phrase == phrase[::-1] # print(isPalindrome) >> true
回文是一系列正向和反向讀取相同的字符。通常你需要一些循環和條件來檢查給定的字符串是否是回文。在 Python 中,你隻需將字符串與其反向字符串進行比較。除瞭使用切片運算符[::-1]
,你還可以使用reverse()
函數來反轉字符串。
到此這篇關於十個驚艷的Pythonic單行代碼的文章就介紹到這瞭,更多相關Pythonic單行代碼內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python基礎學習之生成器與文件系統知識總結
- Python輕松破解加密壓縮包詳解
- python基礎之文件處理知識總結
- Python 循環讀取數據內存不足的解決方案
- python必學知識之文件操作(建議收藏)