python - Python:一旦找到真值,any() 是否会停止迭代列表/生成器?
问题描述
如果你有:
if any(word in sentence for sentence in sentences):
并且sentences
是一个长列表,比如说 10,000 个句子长度的字符串,将any()
遍历整个列表以确定是否有任何为真,或者一旦找到真值,它就会停止查找,因为该any()
值已被确定为真?
如果它真的遍历整个列表,那么当然如果使用 for 循环和 break 一旦找到会更快,而不是使用any()
,这就是我问的原因。
解决方案
是的,它确实像那样短路。从文档中:
相当于:
def any(iterable): for element in iterable: if element: return True return False
一种简单的确认方法是使用大的或无限的可迭代:
>>> any(True for i in range(1_000_000_000_000))
True
(立即的)
推荐阅读
- python - Openpyxl: unexpected fail with CellIsRule function
- java - 引起:android.database.sqlite.SQLiteException:没有这样的表:食物(代码1 SQLITE_ERROR):,编译时:SELECT * FROM food order by id asc 1
- c# - TreeView 多个父级
- python - Pyinstaller 失败,因为在 Windows 上找不到 pyconfig.h
- php - 生成的代码应该一次生成多个 URL
- http - akka websocket 消息大小限制
- jquery - 是否可以使用 Jquery Ajax 调用控制器并在视图中加载模型(而不是在部分视图中)
- python-3.x - 在 jupyter notebook 中导入本地模块
- django - 将 DRF 路由器与 django urlpattern 结合使用
- dart - 如何增加 Flutter 中特定列表项的计数器?