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

Python中高效统计对象列表布尔属性真值数量的优化方案问询

高效统计Python对象列表中布尔属性为True的数量

我有一个包含布尔属性的Python对象列表,需要以相对高效的方式统计其中属性为True的数量。测试脚本如下:

import random
import timeit

class testClass:
    def __init__(self, boolean):
        self.bool = bool(boolean)

bools = [random.randint(0,1) for i in range(1000)]

class_instances = [testClass(boolean=bool) for bool in bools]

现在得到了一个包含1000个testClass实例的列表,每个实例的bool属性都是布尔值。

我已经了解几种常规实现方式:

  • sum([instance.bool for instance in class_instances]):通过列表推导式生成布尔值列表后求和
  • sum(instance.bool for instance in class_instances):用生成器表达式求和,但速度更慢

但这个求和操作会频繁执行,性能分析显示,创建列表或生成器的过程会耗费不少时间。提前生成bool_list = [instance.bool for instance in class_instances]再执行sum(bool_list)速度更快,但如果原class_instances中对象的bool属性被修改,bool_list无法同步更新。

我有没有遗漏的优化思路?我认可列表推导式的便捷性,但希望能有类似指针数组的实现,既能保证求和效率,又能在属性修改时自动同步。我猜测最优方案可能是重构类结构,改成包含列表属性的"大"类,而非用单个实例组成的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:07:12