10條很棒的Python一行代碼
自從我用Python編寫第一行代碼以來,我就被它的簡單性、出色的可讀性和特別流行的一行代碼所吸引。在下面,我想介紹并解釋其中一些一行程序—可能有一些您還不知道,但對您的下一個Python項目很有用。
1. 交換兩個變量
- # a = 1; b = 2
- a, bb = b, a
- # print(a,b) >> 2 1
讓我們從一個經(jīng)典的開始:通過簡單地交換賦值位置來交換變量的值——在我看來,這是最直觀的方法。不需要使用臨時變量。它甚至適用于兩個以上的變量。
2. 多個變量賦值
- a, b, *c = [1,2,3,4,5]
- # print(a,b,c) >> 1 2 [3, 4, 5]
交換變量實際上是python能夠一次分配多個變量的一種特殊情況。在這里,您可以使用它將列表元素分配給給定的變量,這也稱為解包。*將再次打包剩下的值,這將導(dǎo)致c的子列表。它甚至可以用于*的其他位置(例如列表的開始或中間部分)。
3. 對列表每隔兩個元素求和
- # a = [1,2,3,4,5,6]
- s = sum(a[1::2])
- # print(s) >> 12
這里不需要特殊的reduce函數(shù),sum只是添加每個給定迭代的項。這里使用擴(kuò)展的切片語法[::]來返回第二個元素。你可以將它讀為[start: stop: step],所以[1::2]翻譯為從索引1的元素開始(第二個元素),直到列表結(jié)束(第二個參數(shù)沒有給出參數(shù)),并且總是采取兩步。
4. 刪除列表多個元素
- # a = [1,2,3,4,5]
- del a[::2]
- # print(a) >> [2, 4]
擴(kuò)展的切片語法也可以用來一次刪除多個列表元素。
5. 將文件讀入行數(shù)組
- c = [line.strip() for line in open('file.txt')]
- # print(c) >> ['test1', 'test2', 'test3', 'test4']
使用python內(nèi)聯(lián)for循環(huán),您可以輕松地將文件讀入行數(shù)組中。需要使用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語句的幫助下,您可以直接將內(nèi)容寫入文件。確保使用正確的模式打開文件(這里“a”表示附加內(nèi)容)。
7. 創(chuàng)建列表
- l = [('Hi ' + x) for x in ['Alice', 'Bob', 'Pete']]
- # print(l) >> ['Hi Alice', 'Hi Bob', 'Hi Pete']
可以使用內(nèi)聯(lián)for循環(huán)從其他列表動態(tài)創(chuàng)建列表。您可以直接修改值,就像本例中的字符串連接一樣。
8. 列表映射
- l = list(map(int, ['1', '2', '3']))
- # print(l) >> [1, 2, 3]
還可以使用Pythons map()函數(shù)將每個列表元素強(qiáng)制轉(zhuǎn)換為另一種類型。
9. 集合創(chuàng)建
- squares = { x**2 for x in range(6) if x < 4 }
- # print(squares) >> {0, 1, 4, 9
集合也是一樣的。除了內(nèi)聯(lián)for循環(huán)之外,您甚至可以直接添加條件!
10. 回文檢查
- # phrase = 'deleveled'
- isPalindrome = phrase == phrase[::-1]
- # print(isPalindrome) >> true
回文是一系列向前和向后讀取相同的字符。如果給定字符串是回文,通常需要一些循環(huán)和條件來檢查。在Python中,你只需要比較字符串和它的反向字符串。除了使用切片操作符[::-1]之外,您還可以使用reverse()函數(shù)來反轉(zhuǎn)字符串。
英文原文:
https://dev.to/devmount/10-awesome-pythonic-one-liners-explained-3doc