在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python迭代調用內置函數計時比較(上)

jf_78858299 ? 來源:梯閱線條小梯子 ? 作者:小梯子 ? 2023-02-21 14:56 ? 次閱讀

python迭代工具自動調用迭代對象next方法,對迭代對象進行遍歷。

python的for循環、列表解析、map方法、生成器表達式、生成器方法都是迭代工具。

python可迭代對象包括:字符串、列表、元組、字典、集合、range、enumerate、文件等。

1.1 python迭代調用內置函數計時比較

描述

timetool.py:計時模塊,循環調用func函數1000次,返回使用時間和最后一次調用結果。

time.perf_counter():返回性能計數器的值,單位為秒。兩次調用之間的差值用于計時。

timeiterenv.py:各種迭代環境調用內置函數ord(),返回列表。對各種迭代函數調用計時模塊的計時函數進行計時,將計時結果存放在列表,并且按從低到高的順序對計時結果進行排序。

sorted():key = lambda x:x[1],按自定義鍵函數進行排序,x為sorted的第1個參數對應排序對象,x[1]表示按第1個索引值進行排序,本例中對應函數計時結果。

通過例子得出:迭代環境調用內置函數耗時從低到高的順序為:

NO 函數 描述
1 mapCall map迭代工具
2 listComp 列表解析
3 genFunc 生成器函數
4 genExpr 生成器表達式
5 forloop for循環

示例

# timetool.py
import time
reps = 1000
repslist = range(reps)

def timer(func,*pargs,**kargs):
   begin = time.perf_counter()
   for i in repslist:
       ret = func(*pargs,**kargs)
   usetime = time.perf_counter() - begin
   return (usetime,ret)

# timeiterenv.py
import sys,timertool
s = '梯閱線條tyxt'*1000

def forloop():
   res = []
   for x in s:
       res.append(ord(x))
   return res
   
def listComp():
   return [ord(x) for x in s]

def mapCall():
   return list(map(ord,s))
   
def genExpr():
   return list(ord(x) for x in s)
   
def genFunc():
   def gen():
       for x in s:
           yield ord(x)
   return list(gen())
   
print(sys.version)
reslist=[]
for test in (forloop,listComp,mapCall,genExpr,genFunc):
   usetime,result = timertool.timer(test)
   reslist.append((test.__name__,usetime,result[0],result[-1],len(result)))

print('-'*33)        
reslistsort=sorted(reslist,key = lambda x:x[1])
for L in reslistsort:
   print('%-9s:%.5f=>[%s....%s....%s]'%(L[0],L[1],L[2],L[3],L[4]))
print('-'*33)

# 迭代調用內置函數計時比較結果
# 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)]
# ---------------------------------
# mapCall :0.20925=>[26799....116....8000]
# listComp :0.42197=>[26799....116....8000]
# genFunc :0.57103=>[26799....116....8000]
# genExpr :0.57259=>[26799....116....8000]
# forloop :0.66177=>[26799....116....8000]
# ---------------------------------

1.2 python迭代調用用戶函數計時比較

描述

python各種迭代環境調用用戶函數ord(x)+1,進行計時比較。

timertool.py不變,修改timeiterevn.py即可。

通過例子得出:迭代環境調用用戶函數耗時從低到高的順序為:

NO 函數 描述
1 listComp 列表解析
2 genExpr 生成器表達式
3 genFunc 生成器函數
4 forloop for循環
5 mapCall map迭代工具

示例

# timeiterevn.py
import sys,timertool
s = '梯閱線條tyxt'*1000

def forloop():
   res = []
   for x in s:
       res.append(ord(x)+1)
   return res
   
def listComp():
   return [ord(x) for x in s]

def mapCall():
   return list(map(lambda x:ord(x)+1,s))
   
def genExpr():
   return list(ord(x)+1 for x in s)
   
def genFunc():
   def gen():
       for x in s:
           yield ord(x)+1
   return list(gen())

commstr = '# '
print(commstr+str(sys.version))
reslist=[]
for test in (forloop,listComp,mapCall,genExpr,genFunc):
   usetime,result = timertool.timer(test)
   reslist.append((test.__name__,usetime,result[0],result[-1],len(result)))

print(commstr+'-'*33)        
reslistsort=sorted(reslist,key = lambda x:x[1])
for L in reslistsort:
   print(commstr+'%-9s:%.5f=>[%s....%s....%s]'%(L[0],L[1],L[2],L[3],L[4]))
print(commstr+'-'*33)
# 調用用戶函數計時比較結果
# 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)]
# ---------------------------------
# listComp :0.50272=>[26799....116....8000]
# genExpr :0.83316=>[26800....117....8000]
# genFunc :0.85477=>[26800....117....8000]
# forloop :0.94426=>[26800....117....8000]
# mapCall :0.96591=>[26800....117....8000]
# ---------------------------------
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 生成器
    +關注

    關注

    7

    文章

    317

    瀏覽量

    21058
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84834
  • for循環
    +關注

    關注

    0

    文章

    61

    瀏覽量

    2515
收藏 人收藏

    評論

    相關推薦

    一文詳解python調用函數

    函數被定義后,本身是不會自動執行的,只有在被調用后,函數才會被執行,得到相應的結果。但是在 Python 中我們要注意一個關鍵點,就是Python
    發表于 10-01 10:45 ?699次閱讀

    快速掌握Python的遞歸函數與匿名函數調用

    也有迭代的需求,即將自定義類型定義成迭代器類型即可(需要在類里實現__iter__()和__next__()方法,可供next和iter函數調用該對象)。for循環本質
    發表于 07-19 16:22

    python迭代

    的,哪些是不可迭代的。但是對新手來說,可能需要借助一些函數來判別,比如 Python 內置的 collections.abc 模塊,這個模塊只有在
    發表于 02-24 15:42

    python內置函數詳細資料概述

    本文檔的主要內容詳細介紹的是python內置函數詳細資料概述。
    發表于 11-18 08:00 ?0次下載

    python的常用函數有哪些

    map() 是 Python 內置的高階函數,它接收一個函數 f 和一個list ,并通過把函數 f 依次作用在list 的每個元素
    發表于 02-25 11:52 ?9次下載
    <b class='flag-5'>python</b>的常用<b class='flag-5'>函數</b>有哪些

    python提供的68個內置函數詳解

    ? 內置函數就是Python給你提供的,拿來直接用的函數,比如print.,input等。 截止到python版本3.6.2 ,
    的頭像 發表于 10-27 09:14 ?2205次閱讀

    進階必備的68個Python 內置函數分析

    來源: pypypypy 內置函數就是Python給你提供的,拿來直接用的函數,比如print.,input等。 截止到python版本3.
    的頭像 發表于 11-01 10:18 ?4091次閱讀

    python迭代器詳解

    ] for i in alist:... print(i)...012345 2. 是否可迭代? 對 Python 比較熟悉的朋友,肯定知道哪些數據類型是可迭代的,哪些是不可
    的頭像 發表于 02-24 15:42 ?1349次閱讀

    Python支持遞歸函數

    Python支持遞歸函數——即直接或間接地調用自身以進行循環的函數。遞歸是頗為高級的話題,并且它在Python中相對少見。然而,它是一項應該
    的頭像 發表于 02-21 14:28 ?660次閱讀

    python迭代調用內置函數計時比較(下)

    python迭代工具自動調用迭代對象next方法,對迭代對象進行遍歷。 python的fo
    的頭像 發表于 02-21 14:56 ?547次閱讀

    python常用的內置函數和模塊

    python數字包含常用的內置函數和模塊,比如pow()、abs()、floor()、int()等函數,以及math、random等模塊。
    的頭像 發表于 03-10 10:10 ?957次閱讀

    python定義函數調用函數的順序

    定義函數調用函數的順序 函數被定義后,本身是不會自動執行的,只有在被調用后,函數才會被執行,得
    的頭像 發表于 10-04 17:17 ?1453次閱讀

    python函數函數之間的調用

    函數函數之間的調用 3.1 第一種情況 程序代碼如下: def x ( f ): def y (): print ( 1 ) return y def f (): print ( 2 )x(f
    的頭像 發表于 10-04 17:17 ?616次閱讀

    python調用math函數的方法

    Python編程中,數學函數是非常重要的工具,我們可以使用它們進行各種數值計算、幾何運算和統計分析等操作。Python的標準庫中內置了很多數學函數
    的頭像 發表于 11-22 11:01 ?3081次閱讀

    不屬于python內置函數

    Python是一種高級編程語言,它提供了許多內置函數,可以幫助開發人員更輕松地處理各種任務。但是,在Python中并非所有的函數都是
    的頭像 發表于 11-29 14:27 ?1543次閱讀
    主站蜘蛛池模板: 黑人黑粗硬视频| 瑟瑟久久| 激情综合丝袜美女一区二区| aaa级片| 国产真实偷乱视频在线观看| 国产亚洲欧美视频| 成人网在线观看| 在线视频播放大全| 天天摸天天干天天操| 国产精品99r8在线观看| 国产单男| 天天做天天爱天天影视综合| 天天干天天草天天射| 久久久福利| 国产欧美综合在线| 97久久综合九色综合| 人人玩人人弄人人曰| 5x性区m免费毛片视频看看| 丁香六月综合激情| 都市禁忌猎艳风流美妇| 性色视频免费| 欧美一区二区三区精品| 国产三级黄色毛片| 亚洲播播播| 亚洲综合色网站| 日韩精品在线第一页| 2019偷偷狠狠的日日| 视频二区在线观看| 一区二区中文字幕在线观看| 国产精品第页| 色噜噜狠狠网站| 三级四级特黄在线观看| 女性一级全黄生活片| 国产精品永久免费| 天天看片网站| 五月激情网站| 一级特黄性生活大片免费观看| 日韩xx00| 第四色播日韩第一页| 手机看片三级| 中文字幕一区二区三区免费看|