查找列表/设置和修改元素

时间:2014-10-29 11:32:23

标签: python list set lookup nested-lists

我创建了一个函数,用于查找列表中的项是否通用,如果是,则修改这些列表中的特定元素(列表是嵌套的)。问题是列表中的查找是O(n)。如果我有大量的列表,我会花太多时间在查找上。这是使用列表的函数:

def union_finder(list_of_lists_unions):
    while list_of_lists_unions:
        processed_list = list_of_lists_unions.pop(0)
        for item in processed_list:
            for loc_list,pointer_list in enumerate(list_of_lists_unions):
                for location,iteration in enumerate(pointer_list):
                    if item == iteration:
                        #if condition then change the element which matches on the lists
                        if(something):    
                            count +=1
                            index_dict[item] = count
                            list_of_lists_unions[loc_list][location] = str(index_dict[item]) + str('@')

该功能完美无缺。例如,如果我把它作为输入:

  

[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,   20,21,22,23,24,25,26,27,28,29,30],[1,2,3,4,29,30],   [100,200,300,28,29,30]]

修改

我正在尝试使用set(),因为查找复杂度为O(1)(正如文档所述)。问题是我正在使用列表,所以我可以修改迭代内的元素。设置不允许我修改其中的特定元素。我的想法是在集合中找到我想要的项目,然后将其转换回列表进行我想要的修改,然后将其重新设置回设置。但这有效吗?有没有其他方法可以使用set的查找速度?列表的查找复杂度是O(N)太多,因为我的列表有些很长,如果我尝试比较2列表len(list1)= m,len(list2)= n,我得到m * n查找(x中的x)。

0 个答案:

没有答案