Python 程式碼效能優化

  • 137
  • 0

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