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上获得{}
的结果更好
答案 0 :(得分:2)
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
效率更高。