5種非常棒的 Python 技巧,使你的代碼更優(yōu)雅
Python 是全世界程序員使用最廣泛的語(yǔ)言之一。它可用應(yīng)用于機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和數(shù)據(jù)科學(xué)的各種項(xiàng)目。語(yǔ)法簡(jiǎn)潔也使得它成為 Python 初學(xué)者的首選語(yǔ)言。
今天教大家一些 Python 技巧,它可以使你的代碼更優(yōu)雅和高效。
列表
只需一行代碼,讓你的代碼看起來(lái)更簡(jiǎn)潔,并且看起來(lái)更專業(yè)。
a?=?[2,5,7,9]
b?=?[]
for?i?in?range(len(a)):
????b.append(a[i]+1)
這是正常的 code 方式,現(xiàn)在讓它更加簡(jiǎn)潔、專業(yè)一點(diǎn)。
a?=?[2,5,7,9]
b?=?[a[i]+1?for?i?in?range(len(a))]?
你可以看到代碼之間的差別。現(xiàn)在這只是一個(gè)簡(jiǎn)單的例子,后續(xù)你會(huì)發(fā)現(xiàn)有更多的應(yīng)用案例,并可以大幅幫你減少代碼長(zhǎng)度。
反轉(zhuǎn)字符串
讓我們編寫(xiě)一些代碼來(lái)反轉(zhuǎn)字符串。
def?reverse_string(string):
?????result=""
?????for?c?in?range(len(string),-1,-1):
??????????result?=?result?+?string[c]
?????return?result?
看起來(lái)有點(diǎn)亂吧, 用另一種方式來(lái)表達(dá):
def?reverse_string(string):
????result?=?[?string[c]?for?c?in?range(len(string),-1,-1)]
????return?"".join(result)
看起來(lái)不錯(cuò)吧,其實(shí)使用切片的方法可以更好,方法如下:
def?reverse_string(string):
????return?string[::-1]
將數(shù)字與數(shù)字進(jìn)行求和
將數(shù)字與數(shù)字進(jìn)行求和,這是一個(gè)非常簡(jiǎn)單的問(wèn)題,
首先,我們可以用傳統(tǒng)方法解決這個(gè)問(wèn)題:
def?sum_a_num(num):
????sum?=?0
????while?num?>?0:
????????sum+=?num%10
????????num//=10
????return?sum
這是可以的,但在緊張的情況下,最終可能會(huì)與運(yùn)算符發(fā)生拼寫(xiě)錯(cuò)誤或錯(cuò)誤,最終得到錯(cuò)誤的結(jié)果,并花費(fèi)數(shù)小時(shí)嘗試調(diào)試代碼。
因此,要避免這種情況,有一個(gè)更好的方法做到這一點(diǎn)。
def?sum_a_num(num):
????return?sum(list(map(int,str(num))))
現(xiàn)在上述代碼所做的是:
將 num 轉(zhuǎn)換為字符串; map() 函數(shù)在字符串上遍數(shù),并將每個(gè)字符轉(zhuǎn)換為整數(shù); list() 函數(shù)將映射對(duì)象轉(zhuǎn)換為列表,然后求和;
num?=?2367
str(num)?=?'2367'
list(map(int,str(num)))?=?[2,3,6,7]
sum(list(map(int(str(num))))?=?18
交換兩個(gè)數(shù)字
現(xiàn)在,這是一件非常簡(jiǎn)單的事情。
x?=?10
y?=?15
x?=?x?+?y
y?=?x?-?y
x?=?x?-?y
但是,讓我們?cè)谝恍写a中做到這一點(diǎn)
x?=?10
y?=?15
x,y?=?y,x
這樣更好。不是嗎?
列表或字符串中最常見(jiàn)的元素
有多種方法可以實(shí)現(xiàn)此需求,我們可以使用循環(huán)以簡(jiǎn)單的方式做到這一點(diǎn)。下面我分享兩種更高效的方法:
l?=?[1,2,1,4,6,2,7,8,2,2]
print(max(l,key?=?l.count))
或者
my_string?=?"python_is_great"
print(sorted(my_string,key?=?my_string.count)[0])
福利時(shí)間
大家好,最后給大家免費(fèi)分享 Python 三件套:《ThinkPython》、《簡(jiǎn)明Python教程》、《Python進(jìn)階》的PDF電子版。如果你是剛?cè)腴T(mén)的小白,不用想了,這是最好的學(xué)習(xí)教材。
現(xiàn)在免費(fèi)分享出來(lái),有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)里回復(fù)關(guān)鍵字:三件套,就行。
領(lǐng)取方式:
長(zhǎng)按掃碼,發(fā)消息?[三件套]
