在二维数组中搜索字符串最快的方法是什么

2024-10-06 19:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在2d数组的第一列中搜索字符串。最明显的方法是

for i in range (0, len(list)):
if list[i][0]==searchstring:
   list[i][4]=do_a_bunch_of_stuff

我需要知道“我”在哪里,这样我就可以对同一排做很多事情。 我需要遍历2d数组中的所有行

速度是主要因素不是漂亮的代码。最快的(CPU性能)方法是什么?在


Tags: of方法字符串inforlenifrange
2条回答

其实没有一种更快的方法可以做到这一点,你总是要看比较你的搜索字符串的每个内部列表的第一个元素。在

下面的方法可能稍微快一点,因为它避免了几个索引查找:

for x in lst:
    if x[0] == searchstring:
        x[4] = do_a_bunch_of_stuff

由于列是未排序的,所以线性搜索将是您希望从搜索中获得的最快速度,因为您需要检查每个元素。在

如果这是一个必须重复执行的过程,可以使用字典创建索引:

index = {}
for i in range (0, len(list)):
    index[list[i]] = index.get(list[i], list()) + [i]

然后,您可以使用以下命令查找需要搜索的任何字符串的索引:

^{pr2}$

这是以额外的内存开销为代价的,因为您要存储列0中的每个唯一值和要引导的int列表。在

如果不需要以2D数组格式保存数据,可以考虑将其重新构造为字典。可以将搜索字符串用作映射到元组列表的键,其中每个元组保存该行中其他列的数据。在

相关问题 更多 >