溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

學(xué)Python的7個(gè)小技巧

發(fā)布時(shí)間:2020-11-25 10:03:34 來(lái)源:億速云 閱讀:109 作者:小新 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)學(xué)Python的7個(gè)小技巧,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1.一行代碼,巧妙求解

列出1到20的數(shù)字,若是3的倍數(shù)就用apple代替,若是5的倍數(shù)就用orange代替,若既是3的倍數(shù)又是5的倍數(shù)就用appleorange代替

print ['apple'[i%35::]+'orange'[i%56::] or i for i in range(1,21)]

點(diǎn)評(píng):字符串的處理我自認(rèn)為掌握的非常熟練了,各種技巧都已經(jīng)爛熟于心,但是當(dāng)我看到上面這個(gè)解法的時(shí)候,徹底跪了太巧妙了.

2.推導(dǎo)列表生成字典

推導(dǎo)列表我相信大家都用過(guò),但是推導(dǎo)列表還能生成字典,非常簡(jiǎn)潔.

字典的生成相信每個(gè)人都會(huì),但是用推導(dǎo)列表生成字典并不是時(shí)刻都會(huì)想到的.

3.漂亮的zip生成

zip是一個(gè)非常重要的函數(shù),非常方便.熟悉掌握zip幫我大幅的減少函數(shù)的代碼和復(fù)雜度,并且提高效率。

print dict(zip('abcd',range(4))) 
{'a': 0, 'c': 2, 'b': 1, 'd': 3}
chinese=[90,70,96]
eng=[80,78,90]
math=[96,84,80]
total=[]
for c,m,e in zip(chinese,eng,math):
total.append(c+m+e)
print total
[266, 232, 266]

4.if val is not None

為啥會(huì)這樣寫呢,為啥不能寫成 if val ,不知道大家有沒(méi)有思考過(guò)這樣問(wèn)題.

其實(shí)這兩者是有區(qū)別的:比如val 可能為'',0,None,[],{}

如果寫成if val 會(huì)把'',0,[],{}這樣的情況也包含在里面,有的時(shí)候我們其實(shí)只想過(guò)濾掉不為None的情況

5.list分組

有的時(shí)候我們希望對(duì)一個(gè)list進(jìn)行分組,有什么好的辦法呢

通過(guò)一個(gè)推導(dǎo)列表和切片的完美組合,就可以輕松化解.

a=[3, 8, 9, 4, 1, 10, 6, 7, 2]
print [a[i:i+3] for i in xrange(0,len(a),3)]
[[3, 8, 9], [4, 1, 10], [6, 7, 2]]

6.遞歸的好例子

比如有一個(gè)嵌套的列表,里面嵌套了很多層,有列表有元組,層層嵌套,如何把它轉(zhuǎn)換成只有一層的列表,必須要用遞歸也能解決

7.一個(gè)不錯(cuò)的namedtuple class

namedtuple是collections模塊里面的一個(gè)非常有用的函數(shù),類似一個(gè)小的迷你類,但是省去了類的一些復(fù)雜結(jié)構(gòu),可以像訪問(wèn)類的變量一樣去訪問(wèn),非常酷.

關(guān)于學(xué)Python的7個(gè)小技巧就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)
推薦閱讀:
  1. Helm小技巧
  2. PHP 小技巧

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI