优化列表中每个 class 实例的检查属性

Optimize checking attribute of each class instance inside a list

假设我有一个简单的 class,它有一个属性 x:

class A:
    def __init__(self):
        self.x = random.randint(-5, 5) # not the most efficient, but it serves purposes well

我也会有一个列表,其中有数百个 class:

Az = []
for i in range(150):
    Az.append(A())

现在,假设我想遍历 Az 中的所有 A,运行 class 中的一个函数 x 属性相当于小于一。这是一种方式,可惜效率很低:

for cls in Az:
    if cls.x<1:
        func1(cls) # A random function that accepts a class as a parameter, and does something to it

所以,总结一下,我的问题:如何优化检查速度?

只优化第三步很棘手。为什么不从第二步开始,保存属性 x <1 的 类 的列表 ID?

Az = []
ids = []
for i, id in enumerate(range(150)):
    cls = A()
    if cls.x < 1:
        ids.append(id)
    Az.append(cls)

然后修改第三步:

for id in ids:
    func1(Az[id])