在添加项目之前,我应该检查项目是否已经在一个集合中吗?

时间:2015-04-28 19:52:35

标签: python set

如果foo是我认识的内置set包含"bar",那么哪个更快?哪个更像Pythonic?

foo.add("bar")

if "bar" not in foo:
    foo.add("bar")

2 个答案:

答案 0 :(得分:13)

实际上,第二个可能更快(从IPython输出):

In [2]: %timeit s.add("a")
The slowest run took 68.27 times longer than the fastest. This could mean that an intermediate result is being cached 
10000000 loops, best of 3: 73.3 ns per loop

In [3]: %timeit if not "a" in s: s.add("a")
10000000 loops, best of 3: 37.1 ns per loop

但无论如何,第一个更像Pythonic ,我同意。

答案 1 :(得分:0)

pythonic方式是先做,稍后再问。只需将其添加到集合中即可。

首先要求在C等语言中更常见。

性能通常不是python代码的关键。可读性通常更为重要,因此编写意识形态代码是一种很好的做法。