Python 在对象上高效迭代

Python 在对象上高效迭代,python,python-3.x,class,Python,Python 3.x,Class,我用Python设计了自己的类,如下所示: class Main: def __init__(self): self.list = list() # Contains TestA objects class TestA: def __init__(self, start_time, end_time): self.elements = list() # Contains TestB objects self.start_time

我用Python设计了自己的类,如下所示:

class Main:
    def __init__(self):
        self.list = list() # Contains TestA objects

class TestA:
    def __init__(self, start_time, end_time):
        self.elements = list() # Contains TestB objects
        self.start_time = start_time
        self.end_time = end_time

class TestB:
    def __init__(self, timestamp):
        self.timestamp = timestamp
Main
类的列表包含
TestA
类的对象,
TestA
类的列表包含
TestB
类的对象。一个例子如下:

testB1 = TestB(121)
testB2 = TestB(155)
testB3 = TestB(891)
testB4 = TestB(901)

testA1 = TestA(100, 200)
testA1.elements.append(testB1)
testA1.elements.append(testB2)

testA2 = TestA(500, 1000)
testA2.elements.append(testB3)
testA2.elements.append(testB4)


main = Main()
main.list.append(testA1)
main.list.append(testA2)

现在我想根据时间戳过滤对象。首先,我想检索在特定范围内具有
TestA.start\u time
TestA.end\u time
的所有
TestA
对象。其次,我想检索在给定范围内具有
TestB.timestamp
的所有
TestB
对象。当然,我可以在所有
TestA
TestB
对象上循环,但是如果有很多对象,这是低效的

有更有效的方法吗?

使用熊猫, 在时间戳列上具有索引。 然后,如果您有一百万个条目,但只请求二十四个匹配行,
只检查几十行。

“当然,我可以循环所有TestA和TestB对象,但如果对象太多,这是低效的。有没有更有效的方法来执行此操作?”不,如果要使用列表存储此信息,则不需要。你认为这还有什么可能?您是否确实尝试并分析了性能?是的,如果您愿意将对象存储在非普通列表的数据结构中,则有更有效的方法来实现这一点。如果列表按timestamps@juanpa.arrivillaga如果他能想象这是怎么可能的,他很可能不会问。Duh.@finomnis是一个带索引的btree,不过,这确实表明OP应该只使用数据库,而不是重新发明那个轮子。