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