【发布时间】:2016-03-19 18:33:29
【问题描述】:
我正在寻找以下的高效 python 实现:
我有一大组整数列表,长度在 4 到 >100 个整数之间,但长度大多在 4-10 左右。根据数据集的不同,总数可能高达一百万。它们是特定于订单的。整数本身的范围为 0 到
我将输入长度在 3 到 5 个整数之间的搜索列表,再次针对特定顺序。我需要从更大的整数列表集中找到所有示例,其中列表包含输入搜索列表。
例如:示例大型整数列表集 [1,40, 98, 32, 778], [7, 9347, 21, 98345, 632, 444], [87567, 4563, 97, 40, 87], [ 1, 40, 98, 32, 778], [4563, 97, 40, 87, 76], [935, 57342, 86, 213, 89674, 4327, 9641, 13283], [4563, 40, 87, 76, 97]
示例查询 [4563, 97, 40]。
结果 [87567, 4563, 97, 40, 87], [4563, 97, 40, 87, 76] 但不是 [4563, 40, 87, 76, 97]。
我可以将整数列表集存储在 dict 中并搜索查询整数列表的键,但这很慢。我可以将整数列表写入平面文件并使用 grep 搜索它们,这速度很快,但很讨厌。最终,我需要在结果(匹配列表)上运行更多代码,所以我更愿意留在当前的 python 工作流程中。
我知道像 aho corasick 这样的搜索算法,但我使用的是整数而不是文本,我正在做相反的事情(搜索整个字符串以查找子字符串)。
【问题讨论】:
-
您需要对同一组列表执行单个查询还是多个查询?
-
@YvesDaoust - 对同一组列表的一个或多个查询
-
查看我对大量查询的回答。对于单个查询,您不能比在每个列表上进行字符串搜索更好(可能是纯蛮力最快的)。
标签: python algorithm list search