2016-07-07 65 views
0

我面對使用這種結構的自己很多:在python中str()和int()耗時嗎?

for node in range(int(self.num_nodes)): 
    dists[str(node)] = -1 

所以,我的問題是:什麼蟒蛇(3+)使用時str()int(),例如,被稱爲?它只是施放?它轉換? (別的東西?)

你會如何建議我寫這種代碼?請記住,鑰匙的鑰匙必須是strnum_nodes也是str

+2

'dists = [-1] * int(self.num_nodes)''可能會更好。是否有理由需要一個字典,其鍵只是整數的字符串表示? – chepner

回答

3

貴多少strint完全取決於您傳遞給它們的對象。最終,他們只需調用對象的__str____int__鉤子方法。對於大多數簡單的對象,這些操作應該非常快。例如以一個簡單的字符串轉換爲整數把我約0.5微秒計算機:

$python -mtimeit -s 'x="1"' 'int(x)' 
1000000 loops, best of 3: 0.479 usec per loop 

和反向操作只需要一點點超過0.1微秒:

$ python -mtimeit -s 'x=1' 'str(x)' 
10000000 loops, best of 3: 0.12 usec per loop 
但是

,它很容易創建病理性的物體,這將是真的昂貴。

import time 
class Argv(object): 
    def __str__(self): 
     time.sleep(1000) 
     return 'ha ha ha!' 
+0

謝謝你的例子。 :d –

相關問題