我应该在添加之前检查一个项目是否已经在一个集合中吗?
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 代码中的关键。可读性通常更为重要,因此编写符合思想的代码是一种很好的做法。
如果 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 代码中的关键。可读性通常更为重要,因此编写符合思想的代码是一种很好的做法。