我必须多次搜索一个小列表(从 0 到 10 项不等),并且想知道使用 Python(特别是 IronPython 2.7)来做到这一点的最佳方法是什么
搜索运行的次数将始终比列表中要搜索的项目数多很多倍。例如,如果要搜索的列表中有 5 个项目,我可能需要搜索该列表 50 次或更多次。搜索运行不会按顺序进行。换句话说,我有一个函数可以对一个对象执行一系列操作,其中搜索是其中的一部分。使用不同的对象重复调用该函数。
任何给定搜索的匹配项数量可能为零,但很可能超过 1。我需要所有比赛。调用搜索的函数不使用结果;相反,它是处理其他类型对象的不同函数,将使用结果。
我有这个数据结构:
MyDataClass:
ListToSearch ( (AcadEntID, Pt1, Pt2) (AcadEntID Pt1, Pt2) ...)
Results { AcadEntID : ( (RevitLineID, EndPtInx) (RevitLineID, EndPtInx) ...),
(RevitLineID, EndPtInx) (RevitLineID, EndPtInx) ...))
AcadEntID : ( (RevitLineID, EndPtInx) (RevitLineID, EndPtInx) ...),
(RevitLineID, EndPtInx) (RevitLineID, EndPtInx) ...))
}
每个的输入将是 RevitLineID(可以从中获取端点:PtA 和 PtB)
测试询问:对于每个 AcadEntID,PtA 是否位于以 Pt1 为中心的框中?或者它位于以 Pt2 为中心的盒子内?对 PtB 重复上述步骤。每个点都有一个 X 和 Y 值。
如果效率更高,ListToSearch 可以分为多个部分,只要每个点保持与 AcadEntID 关联即可。
该程序正在 RevitPythonShell 中开发,但最终将成为 PyRevit 插件的一部分。
就是这样。我需要一种非常快速的方法来多次搜索短列表。
真诚的; 米歇尔