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

Should I check if an item is already in a set before adding it?

如果 foo 是一个我知道包含 "bar" 的内置 set,哪个更快?哪个更 Pythonic?

foo.add("bar")

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

实际上,第二个 可能 更快(来自 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,我同意。

pythonic的方法是先做后问。只需将其添加到集合中即可。

先询问在 C 等语言中更为常见。

性能通常不是 python 代码中的关键。可读性通常更为重要,因此编写符合思想的代码是一种很好的做法。