2016-07-07 9 views
0

私は自分自身がこの種の構造の多くを使用して直面している:pythonではstr()とint()の時間がかかりますか?

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

だから、私の質問がある:ときstr()またはint()パイソン(3+)を使用してないものを、例えば、と呼ばれていますか?それはちょうど投げますか?それは変換? (他の何か?)

この種のコードを書いてもらえますか? distのキーはstrで、num_nodesstrである必要があります。

+2

'dists = [-1] * int(self.num_nodes)'がおそらく良いでしょう。キーが整数の文字列表現であるdictが必要な理由はありますか? – chepner

答えて

3

どのように高価なstrintは、あなたがそれらに渡すオブジェクトに完全に依存します。最終的には、オブジェクトの__str____int__フックメソッドを呼び出すだけです。ほとんどの単純なオブジェクトでは、これらの操作は非常に速くなければなりません。例えば

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

と逆の操作は少しだけ0.1を超えるマイクロ秒かかる:整数に単純な文字列を変換するためには、約0.5マイクロ秒自分のコンピュータを取る

$ 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 –

関連する問題