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

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

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

3天內不再提示

詳解Python的for和while循環

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-06-24 16:02 ? 次閱讀

Python 的 for 和 while 循環是靈活并且高級的,語法自然、讀起來像偽代碼。而 Cython 也支持 for 和 while,無需修改。但由于循環通常占據程序運行時的大部分時間,因此我們可以通過一些優化,確保 Cython 能夠將 Python 循環轉換為高效的 C 循環。

n=100
foriinrange(n):
 ...

上面是一個標準的 Python for 循環,如果這個 i 和 n 是靜態類型,那么 Cython 就能生成更快的 C 代碼。

cdef Py_ssize_t i, n = 100
for i in range(n):
    ...
# 這段代碼和下面的C代碼是等效的
"""
for (i=0; i

所以當通過 range 進行循環時,我們應該將 range 里面的參數以及循環變量換成 C 的整型。如果不顯式地進行靜態聲明的話,Cython 就會采用最保守的策略:

cdef Py_ssize_t n = 100
for i in range(n):
    print(i + 2 ** 100)

在循環的時候,如果我們使用了變量 i,那么在和一個數字相加的時候,由于 Cython 無法確定是否會發生溢出,因此會保守的選擇 Python 的整型。

如果我們能保證表達式中一定不會發生溢出,那么可以顯式地將 i 也聲明為 C 的整數類型。

當然不光是整型,其它的 Python 類型也可以提前聲明,舉個例子:

cdef list lst = [
    {"name": "satori", "age": 17},
    {"name": "koishi", "age": 16},
    {"name": "marisa", "age": 15},
]

# lst 里面都是字典,在遍歷之前可以提前聲明好
cdef dict item
for item in lst:
    print(f"{item['name']}, {item['age']}")
"""
satori, 17
koishi, 16
marisa, 15
"""

# 通過 cdef dict item 提前聲明循環變量的類型
# 然后遍歷以及操作的時候,速度會快很多
# 因為我們實現了基于類型的優化

以上是 for 循環,至于 while 循環也是同理,說白了還是規定好類型,實現基于類型的優化。

審核編輯:湯梓紅

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

    關注

    0

    文章

    92

    瀏覽量

    16042
  • C代碼
    +關注

    關注

    1

    文章

    89

    瀏覽量

    14357
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040
收藏 人收藏

    評論

    相關推薦

    深入理解C語言:循環語句的應用與優化技巧

    能讓你的代碼更加簡潔明了,還能顯著提升程序執行效率。本文將詳細介紹C語言中的三種常見循環結構——while循環、for循環和do...while
    的頭像 發表于 12-07 01:11 ?251次閱讀
    深入理解C語言:<b class='flag-5'>循環</b>語句的應用與優化技巧

    Python代理技術詳解:從入門到進階

    Python代理技術是一種在網絡編程中廣泛使用的技術,它允許通過代理服務器發送和接收網絡請求。
    的頭像 發表于 11-12 07:06 ?311次閱讀

    求助,While循環和事件結構問題,內有程序文件

    *附件:測試.zip大家好,我設計了一個可以實現控制While循環的程序,如圖 當開關打開時While循環啟動,Add按鈕按一下指示器就加1,當開關關閉時
    發表于 09-20 15:45

    求助,結束while循環后會跳轉至循環前繼續執行的問題求解?

    , %drn", i, j); }在上位機中根據輸出數字顯示波形,其波形如下: 在跳出while循環后其會跳轉至循環前繼續執行兩次,最終在第三次正常結束。 本人才疏學淺,初次遇到這種情況,真誠求助
    發表于 05-22 06:04

    為什么while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循環

    為啥while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循環
    發表于 05-14 06:01

    聊聊MCU死循環,用for(;;)還是while(1)?

    首先,問大家一個問題:你們寫單片機程序【死循環】時,喜歡用for(;;)還是while(1)?快來為你喜歡用的【死循環】打call,評論區等你哦~一位工程師發現,國外工程師在給demo在做死
    的頭像 發表于 04-29 08:10 ?1455次閱讀
    聊聊MCU死<b class='flag-5'>循環</b>,用for(;;)還是<b class='flag-5'>while</b>(1)?

    如何跳出雙層循環,加密程序等問題?

    問題1:有什么更好的方案跳出雙重循環,例如在for循環里面有個while循環等待某個位變化,但是怕被干擾了死在while
    發表于 04-26 07:53

    STM32 RTX CAN封裝庫中while循環無法跳出是為什么?

    ptr_CAN-&gt;MCR = CAN_MCR_RESET; // Reset CAN controller while ((ptr_CAN-&gt
    發表于 04-19 07:58

    STM8S003中主函數中執行完while(1)自動跳出循環是怎么回事?

    ();/*LCD顯示*/ } } 在上面這段主函數的代碼中,如果不加看門狗IWDG_FEED,程序執行完while(1)后就會自動跳出,為什么會非要加看門狗才不會跳出while(1)?不應該是不加IWDG_FEED也不會退出
    發表于 04-18 07:52

    為何國外工程師偏愛使用for(;;)來實現MCU死循環

    一位工程師發現,國外工程師在給demo在做死循環時用的是for(;;),而不是常用的while(1)。這僅僅是個人習慣的問題,還是有更深層次的含義?
    發表于 04-01 11:26 ?715次閱讀
    為何國外工程師偏愛使用for(;;)來實現MCU死<b class='flag-5'>循環</b>?

    stm32g030優化等級高于optimize for debug時,main函數里的while()循環出現if()內語句不能正常執行的原因?

    芯片使用G030,優化等級高于optimize for debug時,就會出現 main函數里的while()循環出現if()內語句不能正常執行的問題
    發表于 03-26 06:24

    什么是PLC循環移位指令 PLC循環移位的特點

    PLC循環移位指令包括循環左移指令和循環右移指令。在循環移位過程中,移出的位并不會丟失,而是會放回空出的位上,形成一個環形移位。
    的頭像 發表于 03-07 16:57 ?2315次閱讀
    什么是PLC<b class='flag-5'>循環</b>移位指令 PLC<b class='flag-5'>循環</b>移位的特點

    TC275屏蔽掉GPIO_DEMO函數后while循環不在執行怎么解決?

    ;gt; 10000000)babywen = 0; } return (1);}屏蔽掉GPIO_DEMO(IO翻轉)函數后while循環不在執行(依據是變量觀測未發生變化),不屏蔽的時候一切正常
    發表于 02-19 08:22

    arduino中while循環怎么跳出

    Arduino 是一款開源的硬件平臺,廣泛應用于各種物聯網和嵌入式系統項目。在 Arduino 上編寫代碼時,循環結構起到了至關重要的作用。而其中的 while 循環更是常用于需要根據特定條件重復
    的頭像 發表于 02-14 16:22 ?2719次閱讀

    循環指令loop規定循環次數

    循環指令是計算機編程中非常重要的概念,它允許程序重復執行一段代碼塊,使得程序可以更有效地處理大量數據和重復性任務。在本文中,我們將詳盡、詳實、細致地介紹循環指令的相關概念、語法和應用場
    的頭像 發表于 02-14 16:10 ?1822次閱讀
    主站蜘蛛池模板: 视频在线二区 | 欧美特黄三级在线观看 | 欧美在线不卡视频 | 扒开末成年粉嫩的流白浆视频 | 亚洲free| 97国产精品人人爽人人做 | 午夜看片 | 日本在线不卡免费 | 视频免费在线观看 | 天天澡天天摸天天爽免费 | 色天网站 | 福利三区| 国产色婷婷 | 一女被两男吃奶玩乳尖口述 | 国产成人优优影院 | 男男宿舍高h炒肉bl 男男污肉高h坐便器调教 | h网站免费在线观看 | 日韩卡1卡2卡三卡四卡二卡免 | 特级淫片aaaa毛片aa视频 | 午夜性爽快 | 亚洲精品久久久久久久蜜桃 | 丁香婷婷久久大综合 | 性殴美高清视频 | 免费网站日本 | 亚洲啊v | 久久综合精品视频 | 欧美一级特黄乱妇高清视频 | 67pao强力打造高清免费 | 性喷潮久久久久久久久 | 9984四虎永久免费网站 | 日日骑夜夜操 | 在线观看亚洲成人 | 国产或人精品日本亚洲77美色 | 日本久草网 | 在线观看网址你懂得 | 亚洲精品456人成在线 | 亚洲一二三区视频 | 日韩在线视频一区 | 日本一区二区三区四区视频 | 夜夜摸夜夜爽 | 日韩精品一区二区三区毛片 |