Python偷懒小技巧-提高10倍工作效率
說明:增加代碼的描述力,可以成倍減少你的LOC,做到簡單,并且真切有力
觀點:少打字=多思考+少出錯,10代碼行比50行更能讓人明白,以下技巧有助于提高10倍工作效率
1. 交換變量值時避免使用臨時變量:(cookbook1.1)
老代碼:我們經(jīng)常很熟練于下面的代碼
temp = x x = y y = temp代碼一:
u, v, w = w, v, u有人提出可以利用賦值順序來簡化上面的三行代碼成一行
代碼二:
u, v = v, u其實利用Python元組賦值的概念,可更簡明 – 元組初始化 + 元組賦值
2. 讀字典時避免判斷鍵值是否存在:(cookbook1.2)
d = { 'key': 'value' }老代碼:
if 'key' in d:print (d['key']) else: print ('not find')新代碼:
print (d.get('key', 'not find'))3. 尋找最小值和位置的代碼優(yōu)化:
s = [ 4,1,8,3 ]老代碼:
mval, mpos = MAX, 0 for i in xrange(len(s)):if s[i] < mval: mval, mpos = s[i], i新代碼:
mval, mpos = min([ (s[i], i) for i in xrange(len(s)) ])元組比較的特性,可以方便的寫做一行
觀點一:用Python編程,需要有“一字千金”的感覺;既然選擇了Python,就不要在意單條語句的效率。
上面幾點例子很基礎(chǔ),實際中將原始代碼壓縮1/5并不是不可能,我們之前一個子項目,C++代碼270K
重構(gòu)后Python代碼只有67K,當(dāng)然使用python的日志模塊(logging),讀寫表格文本(csv)等,也功
不可末,最終代碼變成原來的1/4,我覺得自己的壽命延長了三倍。。。下面優(yōu)化幾個常用代碼:
4. 文件讀取工作的最簡單表達(dá):
老代碼:我們需要將文本文件讀入到內(nèi)存中
line = '' fp = open('text.txt', 'r') for line in fp: text += line代碼一:
text = string.join([ line for line in open('text.txt')], '']代碼二:
text = ''.join([ line for line in open('text.txt')])代碼三:
text = file('text.txt').read()新版本的Python可以讓你寫出比1,2漂亮的代碼(open是file的別名,這里file更直觀)
5. 如何在Python實現(xiàn)三元式:
老代碼:用慣C++,Java,C#不喜歡寫下面代碼
''' 學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' if n >= 0: print ('positive') else: print ('negitive')代碼一:該技巧在 Lua里也很常見
print ((n >= 0) and 'positive' or 'negitive')說明:這里的’and’和’or’相當(dāng)于C中的’:‘和’?‘的作用,道理很簡單,因為如果表達(dá)式為
真了那么后面的or被短路,取到’positive’;否則,and被短路,取到’negitive’
代碼二:
print ((n >= 0 and ['positive'] or ['negitive])[0])說明:將兩個值組裝成元組,即使’positive’是None, ‘’, 0 之類整句話都很安全
代碼三:
print (('negitive', 'positive')[n >= 0])說明:(FalseValue, TrueValue)[Condition] 是利用了 元組訪問 + True=1 兩條原理
6. 避免字典成員是復(fù)雜對象的初始化:(cookbook1.5)
老代碼:
if not y in d: d[y] = { }d[y][x] = 3新代碼:
d.setdefault(y, { })[x] = 3如果成員是列表的話也一樣: d.setdefault(key, []).append(val)
上面六點技巧加以發(fā)揮,代碼已經(jīng)很緊湊了,但是還沒有做到“沒有一句廢話”可能有人懷疑真的能
減少1/5的代碼么??我要說的是1/5其實很保守,Thinking in C++的作者后來用了Python以后
覺得Python甚至提高了20倍的工作效率。
總結(jié)
以上是生活随笔為你收集整理的Python偷懒小技巧-提高10倍工作效率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础教程:操作符
- 下一篇: python基础教程:统计计数的4种常用