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

python从列表中获取集合的这两种方法中,哪一种在效率方面更好?,python,list,python-2.7,set,Python,List,Python 2.7,Set,python从列表中获取集合的这两种方法中,哪一种在效率方面更好 a) set([1,2,3]) b) {s代表[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])' 100000

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

a)
set([1,2,3])

b)
{s代表[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上,
{}
获得的结果都更好:


根据以上结果,将列表对象传递到
集合
更有效。

@falstru感谢您指出
timeit
这是一个很酷的东西@安迪,真的吗?您使用哪种Python/平台?以上结果来自Python2.7.8 64位+Windows7位。Python2.7.6。在32位和64位模式下,我在使用
{}
@andi的版本中获得了更好的结果,在Python2.7.6/Ubuntu 14.04中,我在
set(list)
/429ns中获得了类似的结果。
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