Pythonでは、比較可能なハッシュ可能な要素のセットが与えられた場合、s
ハッシュfrozenset(s)
またはtuple(sorted(s))
。
1902 次
1 に答える
3
それはあなたが何をしているかによります。frozenset()
をソートするよりもtuple
を作成する方が高速ですが、frozenset
より多くのメモリを消費しtuple
ます。
よりもを作成する方が高速frozenset
ですtuple
。
import timeit
import random as rn
x = range(2000)
rn.shuffle(x)
x = tuple(x)
def get_frozen_set(x):
return frozenset(x)
def get_sorted_tuple(x):
return sorted(x)
n = 10000
t1 = timeit.timeit('get_frozen_set(x)', 'from __main__ import x, get_frozen_set', number = n)
print 'create a frozenset:', t1
t2 = timeit.timeit('get_sorted_tuple(x)','from __main__ import x, get_sorted_tuple', number = n)
print 'sort tuple:', t2
結果:
create a frozenset: 0.85803164112
sort tuple: 6.65848886198
tuple
起動が短いため差は非常に大きくさせられますが。為にn = 20
結果:
create a frozenset: 0.0124568308591
sort tuple: 0.0257906431368
frozenset
これはここmemory
に示されています。
との間のルックアップ時間には非常にわずかな違いがありfrozenset
ます。tuple
于 2013-01-26T07:06:41.250 に答える