我的目标是在一个大的列表中找到包含某个值的元素的索引(以1百万个条目为例,每个条目由3个元素组成):
e、 g让我们把 list 列为a
a = [[0,1,2],[0,5,6],[7,8,9]]
我想检索包含值0的元素的索引,因此我的函数将返回0,1
我的第一次try 是:
def any_identical_value(elements,index):
for el in elements:
if el == index:
return True
return False
def get_dual_points(compliant_cells, index ):
compliant = [i for i,e in enumerate(compliant_cells) if any_identical_value(e,index)]
return compliant
result = get_dual_points(a,0)
该解决方案工作正常,但对于大型列表来说效率非常低.具体来说,我的目标是执行一系列的任务,这些任务是主要列表中的值的总数,因此在上面的例子9中为n_queries = len(a)*3
.
这里有两个问题:
- 列表是完成这项任务的良好数据 struct 吗?
- 有没有更有效的算法解决方案?