Skip to main content
 首页 » 编程设计

python 这两种从列表中获取集合的方法中哪一种在效率方面更好

2024年10月25日39dudu

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效率更高。