https://repl.it/@ArmanTavakoli/List-Comprehension-vs-Any
当他们基本上做同样的事情时,为什么我的支票比我的检查要快得多?
从timeit导入default_timer作为计时器…
正如几个人在评论中指出的那样,你的功能在做什么 in 测试比使用的版本慢 any 是因为那个功能 也 包括一个不必要的列表理解,需要在之前迭代整个输入 in 运营商可以开始寻找匹配。在列表上运行时,两者都有 in 和 any 如果在搜索的早期找到匹配值,则可以短路,提前退出。但是你的第二个函数中的列表理解总是迭代整个输入,即使有一个 1 就在一开始。
in
any
1
如果你换了 1 in [num for num in input] 同 1 in input ,你会发现性能与使用的功能一样好或更好 any 。如果,表现将非常相似 input 是一个列表,但对于其他容器类型可能要快得多(例如 set s和 range S)。
1 in [num for num in input]
1 in input
input
set
range