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

时间:2014-09-25 13:37:12

标签: python list python-2.7 set

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([])的构造才会更好。

enter image description here

在OS X以及某些EC2 Linux Ubuntu 14.04 LTS上获得{}的结果更好

1 个答案:

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