0

有:

class Foo:
   def __init__(self, a, b):
       self.a = a 
       self.b = b

和一个类似的列表:

l = [Foo(1, 2), Foo(1, 3), Foo(1, 4), Foo(1, 10)]

如果我想计算具有 == 1 的对象的数量,我会

>>> count_a = len([o for o in l if o.a == 1]) 
>>> assert count_a == 4 

它不是库中允许我执行以下操作的函数:

>>> from operator import attrgetter
>>> count(l, key=attrgetter('a'))
4 
4

1 回答 1

2

您可以使用sum和生成器:

sum(1 for o in l if o.a==1)

输出:4

注意。sum(o.a == 1 for o in l)也可以工作,但这会慢两倍,大概是因为所有项目都到达并由sum

于 2021-10-15T14:23:46.203 回答