You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python中any(True for x in a if x%2)比any(x%2 for x in a)速度快?

性能差异的核心原因

两者的开销差异来自生成器返回值的传递和any()的真值判断步骤,在全偶数的测试场景下(需要遍历完整列表),这部分开销会被放大:

  • 第一种写法any(x % 2 for x in a)的每轮迭代流程:
    1. 计算x % 2得到整数结果
    2. 生成器把整数结果yield给any()函数
    3. any()对接收到的整数做真值判断,确认是假值后继续下一轮迭代
  • 第二种写法any(True for x in a if x % 2)的每轮迭代流程:
    1. 计算x % 2得到整数结果
    2. 生成器内部直接判断x % 2的真值,为假时直接跳过yield步骤,进入下一轮迭代
    3. any()没有接收到任何返回值,不需要额外执行真值判断逻辑

第二种写法省去了每次迭代的返回值传递、any()端的真值判断两步开销,遍历千万级元素时累积的性能优势就会非常明显。如果列表中存在奇数,第二种写法一旦匹配到奇数就会yield固定的布尔值True,any()对布尔值的真值判断开销也远低于对整数的判断开销,仍然会比第一种写法快。

内容的提问来源于stack exchange,提问作者no comment

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:54:03