python推導式pythonic必備
程式設計規範
今天公司新出了一套Python程式設計規範2。0,一直覺得自己寫程式碼路子有點野,所以仔細的看了下。
多數的內容在網上都能搜到,但有幾點需要說說
讓我覺得羞愧的註釋率
公司要求程式碼註釋行,佔程式碼總行數的20%,而我經常一套程式碼寫下來註釋寥寥幾行。甚至在Linux下寫程式碼的時候,由於系統語言包問題,pycharm沒辦法打中文,經常出現通篇沒有一行註釋的情況。。。所謂,寫自己的程式碼,讓別人無處維護也就不過如此。但過了仗劍走天涯的年紀,要開始學著沉澱自己,不為別的,就為現在年輕的小夥子各個吃的好,長得壯。幾個一起來,打不過啊,哈哈。
規避單一迴圈
這一點程式碼要求是我欣然接受的,我這人懶,能偷懶的偷懶,不能偷懶的想辦法也要偷懶。這次的程式碼規範要求,單一輯的for迴圈,透過python推導式完成,但巢狀for迴圈禁止使用。我默默的忽略後面這句,for迴圈推薦python推導式。。。。
為什麼喜歡推導式?因為省事兒、看這高階啊。最怕人說程式猿就是if 。。。else + for迴圈了。。。。
python推導式
今天就給大家介紹下python推導式的使用
推導式(又稱解析式) 是Python的⼀種獨有特性。
推導式是可以從⼀個數據序列構建另⼀個新的資料序列的結構體。 共有三種推導:
列表(list)推導式
字典(dict)推導式
集合(set)推導式
列表推導式 (list comprehensions)
列表推導式(又稱列表解析式) 提供了⼀種簡明扼要的方法來建立列表。
它的結構是在一箇中括號裡包含一個表示式, 然後是一個for語句, 然後是0個或多個for或者if語句。 那個表示式可以是任意的, 意思是你可以在列表中放入任意型別的物件。 返回結果將是⼀個新的列表, 在這個以if和for語句為上下⽂的表示式運⾏完成之後產生
規範
variable = [x for x in list if something == 2]
這⾥是另外⼀個簡明例子:
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]
列表推導式在有些情況下超讚, 特別是當你需要使⽤for迴圈來生成一個新列表。 舉個例子, 通常一般人會這樣做:
squared = []
for x in range(10):
squared。append(x**2)
你可以使⽤列表推導式來簡化它:
squared = [x**2 for x in range(10)]
集合推導式(set comprehensions)
至於集合推導式,跟列表推導式大同小異,不過在去重方面是set的強項
舉個栗子:
squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: {1, 4}
字典推導式(dict comprehensions)
字典推導式,使用的場景比較少,但是有一點是超級讚的!
問題:遇到字典的鍵值對互換,你會怎麼操作?
使用for迴圈?
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,你應該使用字典推導式!
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,如果覺得這篇文章對你有幫助,歡迎將文章或我的微信公眾號【清風Python】轉發分享給更多喜歡python的朋友們,謝謝。
更多精彩內容,請滑至頂部點選右上角關注小宅哦~
作者:清風Python