Python 在对象上高效迭代
我用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
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应该只使用数据库,而不是重新发明那个轮子。