日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
加速Python列表和字典,讓你代碼更加高效

今天,我們將討論P(yáng)ython中的優(yōu)化技術(shù)。在本文中,您將了解如何通過避免在列表和字典中進(jìn)行重新計(jì)算來加快代碼的速度。

我們先編寫一個(gè)裝飾器函數(shù)來計(jì)算函數(shù)的執(zhí)行時(shí)間,方便測驗(yàn)不同代碼的速度:

 
 
 
 
  1. import functools 
  2. import time 
  3.  
  4. def timeit(func): 
  5.     @functools.wraps(func) 
  6.     def newfunc(*args, **kwargs): 
  7.         startTime = time.time() 
  8.         func(*args, **kwargs) 
  9.         elapsedTime = time.time() - startTime 
  10.         print('function - {}, took {} ms to complete'.format(func.__name__, int(elapsedTime * 1000))) 
  11.     return newfunc 

一、避免在列表中重新評(píng)估

1. 在循環(huán)內(nèi)

代碼:

 
 
 
 
  1. @timeit 
  2. def append_inside_loop(limit): 
  3.     nums = [] 
  4.     for num in limit: 
  5.         nums.append(num) 
  6.  
  7. append_inside_loop(list(range(1, 9999999))) 

在上面的函數(shù)中.append每次通過循環(huán)重新計(jì)算的函數(shù)引用。執(zhí)行后,上述函數(shù)所花費(fèi)的總時(shí)間:

 
 
 
 
  1. o/p - function - append_inside_loop, took 529 ms to complete 

2. 在循環(huán)外

代碼:

 
 
 
 
  1. @timeit 
  2. def append_outside_loop(limit): 
  3.     nums = [] 
  4.     append = nums.append 
  5.     for num in limit: 
  6.         append(num) 
  7.  
  8. append_outside_loop(list(range(1, 9999999))) 

在上面的函數(shù)中,我們對(duì)nums.append在循環(huán)外部估值,并在循環(huán)內(nèi)部使用append為變量??倳r(shí)間:

 
 
 
 
  1. o/p - function - append_outside_loop, took 328 ms to complete 

如您所見,當(dāng)我們?cè)?for循環(huán)外部追加為一個(gè)本地變量,這將花費(fèi)更少的時(shí)間,可以將代碼加速201 ms。?

二、避免在字典中重新求值

1. 在循環(huán)內(nèi)部

代碼:

 
 
 
 
  1. @timeit 
  2. def inside_evaluation(limit): 
  3.     data = {} 
  4.     for num in limit: 
  5.         data[num] = data.get(num, 0) + 1 
  6.  
  7. inside_evaluation(list(range(1, 9999999))) 

上述函數(shù)所花費(fèi)的總時(shí)間:

 
 
 
 
  1. o/p - function - inside_evaluation, took 1400 ms to complete 

2. 在循環(huán)外

代碼:

 
 
 
 
  1. @timeit 
  2. def outside_evaluation(limit): 
  3.     data = {} 
  4.     get = data.get 
  5.     for num in limit: 
  6.         data[num] = get(num, 0) + 1 
  7.  
  8.  
  9. outside_evaluation(list(range(1, 9999999))) 

上述函數(shù)所花費(fèi)的總時(shí)間:

 
 
 
 
  1. o/p - function - outside_evaluation, took 1189 ms to complete 

如你所見,我們這里的代碼速度提高了211毫秒。

英文原文:https://dev.to/sharmapacific/speedup-python-list-and-dictionary-12kd


網(wǎng)站題目:加速Python列表和字典,讓你代碼更加高效
網(wǎng)站地址:http://www.dlmjj.cn/article/coggipc.html