我一直在对Python代码进行一些基准测试,并且发现了一件奇怪的事情:
$ python -m timeit '{x**2 for x in range(10_000)}'
100 loops, best of 3: 3.3 msec per loop
$ python -m timeit 'set([x**2 for x in range(10_000)])'
100 loops, best of 3: 3.21 msec per loop
为什么集合理解要比使用set()
函数和列表理解来创建中间列表要慢?我正在使用Python 3.6.6。