您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Python性能調(diào)優(yōu)的小技巧有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python性能調(diào)優(yōu)的小技巧有哪些”這篇文章吧。
替換下面代碼:
cube_numbers = [] for n in range(0,10): if n % 2 == 1: cube_numbers.append(n**3)
為列表生成式寫法:
cube_numbers = [n**3 for n in range(1,10) if n%2 == 1]
盡可能多使用下面這些內(nèi)置函數(shù):
單機(jī)處理較大數(shù)據(jù)量時(shí),生成器往往很有用,因?yàn)樗欠中∑鸫巫x取,最大程度節(jié)省內(nèi)存,如下網(wǎng)頁爬取時(shí)使用yield
import requests import re def get_pages(link): pages_to_visit = [] pages_to_visit.append(link) pattern = re.compile('https?') while pages_to_visit: current_page = pages_to_visit.pop(0) page = requests.get(current_page) for url in re.findall('<a href="([^" rel="external nofollow" ]+)">', str(page.content)): if url[0] == '/': url = current_page + url[1:] if pattern.match(url): pages_to_visit.append(url) # yield yield current_page webpage = get_pages('http://www.example.com') for result in webpage: print(result)
for name in member_list: print('{} is a member'.format(name))
替換下面代碼:
a = [1,2,3,4,5] b = [2,3,4,5,6] overlaps = [] for x in a: for y in b: if x==y: overlaps.append(x) print(overlaps)
修改為set和求交集:
a = [1,2,3,4,5] b = [2,3,4,5,6] overlaps = set(a) & set(b) print(overlaps)
Python支持多重賦值的風(fēng)格,要多多使用
first_name, last_name, city = "Kevin", "Cunningham", "Brighton"
Python查找最快、效率最高的是局部變量,查找全局變量相對(duì)變慢很多,因此多用局部變量,少用全局變量。
itertools模塊支持多個(gè)迭代器的操作,提供最節(jié)省內(nèi)存的寫法,因此要多多使用,如下求三個(gè)元素的全排列:
import itertools iter = itertools.permutations(["Alice", "Bob", "Carol"]) list(iter)
位于functools模塊的lru_cache
裝飾器提供了緩存功能,如下結(jié)合它和遞歸求解斐波那契數(shù)列第n:
import functools @functools.lru_cache(maxsize=128) def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 return fibonacci(n - 1) + fibonacci(n-2)
因此,下面的遞歸寫法非常低效,存在重復(fù)求解多個(gè)子問題的情況:
def fibonacci(n): if n == 0: # There is no 0'th number return 0 elif n == 1: # We define the first number as 1 return 1 return fibonacci(n - 1) + fibonacci(n-2)
上面提到盡量多使用內(nèi)置函數(shù),如下對(duì)列表排序使用key
,operator.itemgetter
:
import operator my_list = [("Josh", "Grobin", "Singer"), ("Marco", "Polo", "General"), ("Ada", "Lovelace", "Scientist")] my_list.sort(key=operator.itemgetter(0)) my_list
以上是“Python性能調(diào)優(yōu)的小技巧有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。