我有一个对象列表,每个对象都相同。
每个对象都有自己的对象列表(通常只有 5-10 个项目)
我以前做的是:
for o in main_object_list:
obj_list = o.get_this_object_list()
for i in obj_list:
if i in main_object_list:
//do something with i
虽然这种方法有效,但当 main_object_list 有 100.000 个元素时,它会变得非常慢。
我的解决方法是这样的:
for o in main_object_list:
o.flag = True
for o in main_object_list:
obj_list = o.get_this_object_list()
for i in obj_list:
if i.flag:
//do something with i
它的速度提高了几个数量级(从 22 分钟缩短到 17 秒),但我怀疑可能会有不同的、更好的方法。此外,这个例子之所以有效,是因为每个对象都有一个标志属性,顺便说一下,使用可能已经在其他函数中设置/取消设置的标志并不是那么优雅(如果在父函数的主体中调用此函数使用相同标志机制的函数,这会搞砸一切,设置每个对象标志)
有没有更正确的pythonesque方法来快速检查一个对象是否在main_object_list中?