2014-09-25 24 views
2

python这两种从列表中设置的方式哪一个在效率方面更好?python这两种从列表中设置的方法哪一个在效率方面更好?

一)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

回答

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

+1

@falstru感谢您指出'timeit'这是很酷的东西! – andi 2014-09-25 13:45:52

+0

反正我得到了相反的结果... – andi 2014-09-25 13:55:12

+0

@andi,真的吗?你使用哪种Python /平台?以上结果来自Python 2.7.8 64位+ Windows 7位。 – falsetru 2014-09-25 13:56:18