編程規(guī)范
今天公司新出了一套Python編程規(guī)范2.0,一直覺得自己寫代碼路子有點(diǎn)野惑朦,所以仔細(xì)的看了下笨鸡。
多數(shù)的內(nèi)容在網(wǎng)上都能搜到迫像,但有幾點(diǎn)需要說說
- 讓我覺得羞愧的注釋率
公司要求代碼注釋行蛀恩,占代碼總行數(shù)的20%敌土,而我經(jīng)常一套代碼寫下來注釋寥寥幾行镜硕。甚至在Linux下寫代碼的時(shí)候,由于系統(tǒng)語言包問題返干,pycharm沒辦法打中文兴枯,經(jīng)常出現(xiàn)通篇沒有一行注釋的情況...所謂,寫自己的代碼矩欠,讓別人無處維護(hù)也就不過如此财剖。但過了仗劍走天涯的年紀(jì)悠夯,要開始學(xué)著沉淀自己,不為別的峰伙,就為現(xiàn)在年輕的小伙子各個(gè)吃的好疗疟,長(zhǎng)得壯。幾個(gè)一起來瞳氓,打不過啊策彤,哈哈。 - 規(guī)避單一循環(huán)
這一點(diǎn)代碼要求是我欣然接受的匣摘,我這人懶店诗,能偷懶的偷懶,不能偷懶的想辦法也要偷懶音榜。這次的代碼規(guī)范要求庞瘸,單一輯的for循環(huán),通過python推導(dǎo)式完成赠叼,但嵌套for循環(huán)禁止使用擦囊。我默默的忽略后面這句,for循環(huán)推薦python推導(dǎo)式....
為什么喜歡推導(dǎo)式嘴办?因?yàn)槭∈聝核渤 ⒖催@高端啊。最怕人說程序猿就是if ...else + for循環(huán)了....
python推導(dǎo)式
今天就給大家介紹下python推導(dǎo)式的使用
推導(dǎo)式(又稱解析式) 是Python的?種獨(dú)有特性涧郊。
推導(dǎo)式是可以從?個(gè)數(shù)據(jù)序列構(gòu)建另?個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體贯被。 共有三種推導(dǎo):
- 列表(list)推導(dǎo)式
- 字典(dict)推導(dǎo)式
- 集合(set)推導(dǎo)式
列表推導(dǎo)式 (list comprehensions)
列表推導(dǎo)式(又稱列表解析式) 提供了?種簡(jiǎn)明扼要的方法來創(chuàng)建列表。
它的結(jié)構(gòu)是在一個(gè)中括號(hào)里包含一個(gè)表達(dá)式妆艘, 然后是一個(gè)for語句彤灶, 然后是0個(gè)或多個(gè)for或者if語句。 那個(gè)表達(dá)式可以是任意的批旺, 意思是你可以在列表中放入任意類型的對(duì)象幌陕。 返回結(jié)果將是?個(gè)新的列表, 在這個(gè)以if和for語句為上下?的表達(dá)式運(yùn)?完成之后產(chǎn)生
規(guī)范
variable = [x for x in list if something == 2]
這?是另外?個(gè)簡(jiǎn)明例子:
multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
列表推導(dǎo)式在有些情況下超贊汽煮, 特別是當(dāng)你需要使?for循環(huán)來生成一個(gè)新列表苞轿。 舉個(gè)例子, 通常一般人會(huì)這樣做:
squared = []
for x in range(10):
squared.append(x**2)
你可以使?列表推導(dǎo)式來簡(jiǎn)化它:
squared = [x**2 for x in range(10)]
集合推導(dǎo)式(set comprehensions)
至于集合推導(dǎo)式逗物,跟列表推導(dǎo)式大同小異搬卒,不過在去重方面是set的強(qiáng)項(xiàng)
舉個(gè)栗子:
squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: {1, 4}
字典推導(dǎo)式(dict comprehensions)
字典推導(dǎo)式,使用的場(chǎng)景比較少翎卓,但是有一點(diǎn)是超級(jí)贊的契邀!
問題:遇到字典的鍵值對(duì)互換,你會(huì)怎么操作?
- 使用for循環(huán)失暴?
mydict={"a":1,"b":2,"c":3}
mydict_new={}
for key,val in mydict.items():
mydict_new[val]=key
- 使用zip坯门?
mydict={"a":1,"b":2,"c":3}
newdict=dict(zip(mydict.values(),mydict.keys()))
- say no微饥,你應(yīng)該使用字典推導(dǎo)式!
mydict={"a":1,"b":2,"c":3}
newdict={v: k for k, v in some_dict.items()}
or
newdict=dict([val,key] for key,val in mydict.items())
The End
OK古戴,如果覺得這篇文章對(duì)你有幫助欠橘,歡迎將文章或我的微信公眾號(hào)【清風(fēng)Python】轉(zhuǎn)發(fā)分享給更多喜歡python的朋友們,謝謝现恼。