1

同じための timeit トライアルのサンプルを次に示します。

>>> import timeit
>>> setup = """
... from random import randint
... rand_list = [randint(0,10) for i in range(0,10000)]
... """

>>> timeit.Timer('list(set(rand_list))', setup=setup).repeat(5, 1000)
[0.17256593704223633, 0.17117094993591309, 0.17115998268127441, 0.17191100120544434, 0.17226791381835938]
>>> timeit.Timer('{ x:True for x in rand_list}.keys()', setup=setup).repeat(5, 1000)
[0.4490840435028076, 0.44455599784851074, 0.442918062210083, 0.4430229663848877, 0.44559407234191895]

ご覧のとおり、list(set(MY_LIST)) メソッドは辞書メソッドよりも約 2.5 倍高速であり、結果は小さなリストでも大きなリストでも同様です。

なぜこれがそうであるか、つまり時間の複雑さの点でこれらの両方のステップの実行機能の違いを説明できますか?

4

1 に答える 1