python 这两种从列表中获取集合的方式哪种效率更高?
a) set([1,2,3])
b) {s for s in [1,2,3]}
老实说,第二种方式对我来说还是有点奇怪。
按照 falsetru 的提示我试过了:
andi$ python -m timeit '{s for s in [1,2,3]}'
1000000 loops, best of 3: 0.619 usec per loop
andi$ python -m timeit 'set(s for s in [1,2,3])'
1000000 loops, best of 3: 0.911 usec per loop
并且我使用 {} 获得了更好的构造结果。只有在没有任何列表理解的情况下直接传递数组时,使用 set([]) 的构造才表现更好。
{} 在 OS X 和某些 EC2 Linux Ubuntu 14.04 LTS 上获得的结果更好
请您参考如下方法:
Timeit他们:
In [1]: timeit set([1,2,3])
1000000 loops, best of 3: 359 ns per loop
In [2]: timeit {s for s in [1,2,3]}
1000000 loops, best of 3: 474 ns per loop
根据上面的结果,将列表对象传递给set效率更高。
