程式設計規範

今天公司新出了一套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推導式pythonic必備

作者:清風Python