这是相同的 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 倍,对于较小的列表或较大的列表,结果相似。
谁能解释一下为什么会这样,即这两个步骤的执行功能在时间复杂度方面的差异?