演算子の速度はPythonでiterableの長さに比例しますか?Python "in"演算子の速度
ので、
len(x) #10
if(a in x): #lets say this takes time A
pass
len(y) #10000
if(a in y): #lets say this takes time B
pass
はA> Bか?
演算子の速度はPythonでiterableの長さに比例しますか?Python "in"演算子の速度
ので、
len(x) #10
if(a in x): #lets say this takes time A
pass
len(y) #10000
if(a in y): #lets say this takes time B
pass
はA> Bか?
a
の種類、特にb
の種類によって異なります。たとえば、b
がリストである場合、yes、in
は最悪の場合の時刻であるO(len(b))
になります。しかし、例えばb
がdictまたはセットである場合、in
は、予想ケース時間O(1)
(すなわち、一定時間)を要する。
「A> B?」については、A
またはB
を定義していません。上記のように、あなたのin
ステートメントのどちらが速く実行されるのかに関する一般的な答えはありません。
文字列がdictのキーとして存在するかどうかを確認する必要がある場合。 O(1)が必要です。しかし、文字列がリストに存在するかどうかを確認する必要がある場合は、O(n)を右にしますか? –
、あるいは文字列と文字列のリストを持っていても、xはリストのxよりも速くなりますか? –
平均的にはyesです。 – lennon310