这是我的时间安排:
>>> import timeit
>>> timeit.timeit(lambda: set(l))
0.7210583936611334
>>> timeit.timeit(lambda: {*l})
0.5386332845236943
为什么呢,我的看法是平等的,但事实并非如此。
所以从这个例子中解包很快,对吧?
答案 0 :(得分:5)
出于同样的原因[]
is faster than list()
;解释器包括对使用特殊代码路径的基于语法的操作的专门支持,而构造函数调用涉及:
dict
查找,一个在全局范围内,然后在失败时在内置范围内另一个)所有这些优点都与固定开销有关;两种方法的big-O相同,所以{*range(10000)}
不会比set(range(10000))
显着/可靠地运行,因为实际的构造工作大大超过了通过常规调度加载和调用构造函数的开销