日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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ì)算來加快代碼的速度。

創(chuàng)新互聯(lián)是一家專業(yè)提供靖江企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為靖江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

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

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

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

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

代碼:

 
 
 
 
  1. @timeit
  2. def append_inside_loop(limit):
  3.     nums = []
  4.     for num in limit:
  5.         nums.append(num)
  6. 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

在循環(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. 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。?

避免在字典中重新求值

在循環(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. inside_evaluation(list(range(1, 9999999)))

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

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

在循環(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. outside_evaluation(list(range(1, 9999999)))

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

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

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


網(wǎng)頁名稱:如何加速Python列表和字典讓你的代碼更加高效
鏈接分享:http://www.5511xx.com/article/djpdghj.html