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

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

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

3天內不再提示

Python哪種方式循環最快呢?

新機器視覺 ? 來源:StarryLand ? 2023-04-01 09:32 ? 次閱讀

眾所周知,Python 不是一種執行效率較高的語言。此外在任何語言中,循環都是一種非常消耗時間的操作。假如任意一種簡單的單步操作耗費的時間為 1 個單位,將此操作重復執行上萬次,最終耗費的時間也將增長上萬倍。

while和for是 Python 中常用的兩種實現循環的關鍵字,它們的運行效率實際上是有差距的。比如下面的測試代碼:

importtimeit


defwhile_loop(n=100_000_000):
i=0
s=0
whileiwhileloop4.718853999860585
#=>forloop3.211570399813354

這是一個簡單的求和操作,計算從 1 到 n 之間所有自然數的總和??梢钥吹絝or循環相比while要快 1.5 秒。

其中的差距主要在于兩者的機制不同。

在每次循環中,while實際上比for多執行了兩步操作:邊界檢查和變量i的自增。即每進行一次循環,while 都會做一次邊界檢查 (while i < n)和自增計算(i +=1)。這兩步操作都是顯式的純 Python 代碼。

for循環不需要執行邊界檢查和自增操作,沒有增加顯式的 Python 代碼(純 Python 代碼效率低于底層的 C 代碼)。當循環的次數足夠多,就出現了明顯的效率差距。

可以再增加兩個函數,在for循環中加上不必要的邊界檢查和自增計算:

importtimeit


defwhile_loop(n=100_000_000):
i=0
s=0
whileiwhileloop4.718853999860585
#=>forloop3.211570399813354
#=>forloopwithincrement4.602369500091299
#=>forloopwithtest4.18337869993411

可以看出,增加的邊界檢查和自增操作確實大大影響了for循環的執行效率。

前面提到過,Python 底層的解釋器和內置函數是用 C 語言實現的。而 C 語言的執行效率遠大于 Python。

對于上面的求等差數列之和的操作,借助于 Python 內置的sum函數,可以獲得遠大于for或while循環的執行效率。

importtimeit


defwhile_loop(n=100_000_000):
i=0
s=0
whileiwhileloop4.718853999860585
#=>forloop3.211570399813354
#=>sumrange0.8658821999561042

可以看到,使用內置函數sum替代循環之后,代碼的執行效率實現了成倍的增長。

內置函數sum的累加操作實際上也是一種循環,但它由 C 語言實現,而for循環中的求和操作是由純 Python 代碼s += i實現的。C > Python。

再拓展一下思維。小時候都聽說過童年高斯巧妙地計算 1 到 100 之和的故事。1…100 之和等于 (1 + 100) * 50。這個計算方法同樣可以應用到上面的求和操作中。

importtimeit


defwhile_loop(n=100_000_000):
i=0
s=0
whileiwhileloop4.718853999860585
#=>forloop3.211570399813354
#=>sumrange0.8658821999561042
#=>mathsum2.400018274784088e-06

最終 math sum 的執行時間約為2.4e-6,縮短了上百萬倍。這里的思路就是,既然循環的效率低,一段代碼要重復執行上億次。

索性直接不要循環,通過數學公式,把上億次的循環操作變成只有一步操作。效率自然得到了空前的加強。

最后的結論(有點謎語人):

實現循環的最快方式—— —— ——就是不用循環

對于 Python 而言,則盡可能地使用內置函數,將循環中的純 Python 代碼降到最低。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140456
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86213

原文標題:Python 哪種方式循環最快,或許顛覆你的認知!

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一文詳解python循環

    今天給大家帶來python循環。
    發表于 10-01 10:48 ?7346次閱讀
    一文詳解<b class='flag-5'>python</b><b class='flag-5'>循環</b>

    python for循環

    python for循環for 循環可以遍歷任何序列的項目,如一個列表或者一個字符串。它的基本語法是for 元素 in 序列對象:1. 普通循環直接上案例>>> phones
    發表于 02-25 16:28

    python while循環

    python while循環while 語句用于循環執行程序,即在某條件下,循環執行某段程序,以處理需要重復處理的相同任務。其基本形式為:while 判斷條件: 執行語句1. 普通的
    發表于 02-28 16:40

    Python for、while 等循環速度對比

    的結論(有點謎語人):實現循環最快方式—— —— ——就是不用循環對于 Python 而言,則盡可能地使用內置函數,將
    發表于 03-25 16:05

    python for循環的案例說明

    python for循環 for 循環可以遍歷任何序列的項目,如一個列表或者一個字符串。 它的基本語法是 for 元素 in 序列對象: 代碼塊 1. 普通循環 直接上案例 phone
    的頭像 發表于 02-25 16:27 ?3283次閱讀

    詳解Python的for和while循環

    Python 的 for 和 while 循環是靈活并且高級的,語法自然、讀起來像偽代碼。而 Cython 也支持 for 和 while,無需修改。但由于循環通常占據程序運行時的大部分時間,因此我們可以通過一些優化,確保 Cy
    的頭像 發表于 06-24 16:02 ?1748次閱讀

    Python的while循環是什么

    Python中有2種循環。一種循環次數明確,另一種循環次數不明確。`for循環`的循環重復次數是
    的頭像 發表于 02-23 11:15 ?1569次閱讀

    Python中的while循環結構

    Python 中,while 循環是一種重復執行代碼塊的結構,只要指定的條件為 True,就會繼續執行。
    的頭像 發表于 04-19 15:44 ?2086次閱讀

    Python中的for循環結構

    Python 中,for 循環是一種常用的結構,用于遍歷序列(如列表、元組、字符串)中的元素。
    的頭像 發表于 04-19 15:45 ?2719次閱讀

    詳解Python中的while循環

    說起編程語言中的循環,一般 for 循環用的時候比較多,因為相比于 while 循環,for 循環的代碼量更少。不過有時候也會用到 while 循環
    的頭像 發表于 04-26 17:55 ?1723次閱讀

    Python循環語句介紹

    哈嘍大家好,我是知道。今天帶大家了解下Python循環語句 定義循環語句允許我們執行一個語句或語句組多次 類型Python提供了兩種不同類型的循環
    的頭像 發表于 05-11 17:39 ?1157次閱讀

    python最簡單for循環例子

    Python是一種簡單而又強大的編程語言,通過其清晰的語法和豐富的功能庫,我們可以實現各種各樣的任務。其中一個最基本的語法結構就是for循環,讓我們來看一下如何使用for循環來編寫一個最簡單的例子
    的頭像 發表于 11-21 14:53 ?1683次閱讀

    python循環里的輸出結果匯總

    循環是計算機編程中常用的一種控制結構,用于重復執行一段代碼。Python提供了多種類型的循環結構,包括for循環和while循環。在這篇文章
    的頭像 發表于 11-22 09:59 ?2203次閱讀

    python循環創建變量并賦值

    循環Python編程中非常重要的一個概念,它可以讓我們輕松地重復執行某些代碼塊,從而簡化編程過程并提高代碼的效率。在循環中,我們經常需要創建變量并賦值,這是非常常見的操作。接下來,我將詳盡地解釋在
    的頭像 發表于 11-23 14:51 ?2099次閱讀

    python怎么設置循環次數

    Python中,可以使用循環語句來重復執行一段代碼多次。要設置循環次數,可以使用循環的計數器來控制循環的執行次數。以下是幾種常用的設置
    的頭像 發表于 11-23 15:50 ?5914次閱讀
    主站蜘蛛池模板: 日韩欧美亚洲一区 | 久久69 | 欧美无遮挡一区二区三区 | 黑粗硬大欧美视频 | 在线成人aa在线看片 | 夜夜夜夜曰天天天天拍国产 | 免费看特级淫片日本 | 又黄又爽又猛大片录像 | 免费福利在线播放 | 午夜三级网 | 69xxx日本| 日本黄色片免费看 | 综合激情网五月 | 四虎影视最新 | 亚洲经典一区二区三区 | 国产精品久久久久网站 | 日韩免费毛片 | 天堂电影在线观看免费入口 | 天天躁夜夜 | 国产精品理论片在线观看 | 亚洲综合色婷婷在线观看 | 日韩一级特黄毛片在线看 | 巨臀中文字幕一区二区翘臀 | 天天拍拍天天爽免费视频 | 成人欧美网站 | 中国特级毛片 | 特黄特色大片免费播放路01 | 黑人边吃奶边扎下面激情视频 | 伊人福利视频 | 久久夜夜操妹子 | 亚洲精品久久久久久久蜜桃 | 五月婷婷丁香在线视频 | 一区视频在线播放 | 久久免费精品高清麻豆 | 又大又粗进出白浆直流动态图 | 久久频这里精品99香蕉久网址 | 天天爱综合网 | 成人理伦 | 特黄特a级特别特级特毛片 特黄特色大片免费播放路01 | 色老头网址 | 欧美a区 |