有效地遍历对象

时间:2019-05-26 20:51:20

标签: 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 = 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)

现在,我想根据时间戳过滤对象。首先,我想检索在特定范围内具有TestATestA.start_time的所有TestA.end_time对象。其次,我想检索在给定范围内具有TestB的所有TestB.timestamps对象。当然,我可以循环遍历所有TestATestB对象,但是如果有很多对象,这效率很低。

有没有更有效的方法?

1 个答案:

答案 0 :(得分:-1)

使用大熊猫dataframe, 在timestamp列上有一个索引。 然后,如果您有一百万个条目,但仅请求二十四个匹配的行, 仅会检查几十行。