Python 程式碼效能優化
from itertools import izip
from collections import defaultdict
//list
colours = ['red', 'green', 'blue']
//dictionary
d = {'a' : 'apple', 'b' : 'ball', 'c' : 'cat'}
循環:數字序列
//xrange()
//xrange 惰性求值(Lazy Evaluation)
//xrange 建立一個疊代器(iterator),在範圍內逐一取用數字,耗用較少記憶體
for i in xrange(9):
print i
循環:list
for colour in colours:
print colour
//enumerate()
for i, colour in enumerate(colours):
print i, '-->', colour
//reversed()
for colour in reversed(colours):
print colour
//sorted()
for colour in sorted(colours):
print colour
for colour in sorted(colours, reverse=True):
print colour
//izip()
//適用於大量資料 list,疊代器(iterator)速度較快,耗用較少記憶體
for name, colour in izip(names, colours):
print name, '-->', colour
//iter()
//function:無參數函式。partial()可使函式使用默認參數
//sentinel:臨界值
blocks = []
for block in iter(partial(f.read, 32), ''):
blocks.append(block)
//for - else
//簡化於循環中加入條件語句的複雜度
def find(seq, target):
for i, value in enumerate(seq):
if value == target:
return i
else:
return -1
循環:字典
//izip()
//將兩個 list 合併成一個 dictionary
d = (izip(names, org))
for k in d:
print k
//iteritems()
//較快的循環函式
for k,v in d.iteritems():
print k, '-->', v
//defaultdict()
//循環數字序列
d = defaultdict(int)
for colour in colours:
d[colour] += 1