python中,條件判斷過多是否會影響程序的運行速度?
01-29
最近在寫一個爬蟲,中間有很多函數中有大量的條件判斷的語句,類似:
if value == "A":
#code
if value == "B":
#function
......
這樣是不是會對代碼運行時效率造成影響?
Python中有哪些比較好的方法解決條件判斷過多辦法,或者說代替大量if判斷的方法?
自然是會的,判斷都要進行計算。如果分支實在太多,有一種方法是把值和對應的操作存在dict裡面,比如說:
if a == 1:
return 12
elif a == 2:
return 23
else:
return 19
可以改寫為:
map = {1:12, 2:23}
return map.get(a, 19)
當分支很少的時候可能反而會變慢,因為dict的操作常數比較大,但是這樣有幾個好處,首先分支非常多的時候會更快,而且把hardcode的分支改成了數據結構,就可以動態添加、刪除,可以很容易將硬分支改成OOP控制的可擴展的結構。最終還是看你的需求的。
影響歸影響,記得算時間複雜度。畢竟python的簡單判斷你能每秒跑10^6~10^7次,因此不是那麼重要。
不如說如果條件太長條,那麼看代碼會顯得很啰嗦……
相比之下,決策樹和決策表都會略微增加複雜度,但是能讓代碼看起來更清晰也更通用。
以及可以用dict來模擬模式匹配,能稍微好看一些。推薦你看一本書第18章,講的就是這種優化。
Table-Driven Methods
Python 用字典來優化if 多路判斷。
應該是會的,看上面有說用字典優化的,感覺就像我用matlab使用太多for和if影響效率可以用矩陣來優化一樣
If statement is evil.
Explanations:http://stackoverflow.com/questions/1554180/why-is-the-if-statement-considered-evil還有個 ANTI-IF COMPAIgN;
http://antiifcampaign.com
手機上作答,好像沒法改格式吧…會的,編譯原理方面的書,應該會講到
推薦閱讀:
※深度學習入門:投身深度學習你需要哪些準備?
※Golang 學習筆記一
※備忘131228
※極光日報 第 207-208 期 | 2017 / 7 / 5 - 6