蟒蛇。如何优化搜索功能

时间:2015-02-17 19:38:19

标签: python list optimization

有什么方法可以优化这两个功能?

第一个功能:

def searchList(list_, element):
    for i in range (0,len(list_)):
        if(list_[i] == element):
            return True      
    return False

第二个功能:

return_list=[]
for x in list_search:
    if searchList(list_users,x)==False:
        return_list.append(x)

4 个答案:

答案 0 :(得分:5)

是:

return_list = [x for x in list_search if x not in list_users]

第一个函数基本上检查成员资格,在这种情况下你可以使用in keyword。第二个函数可以缩减为list comprehension,以根据您的条件过滤掉list_search列表中的元素。

答案 1 :(得分:4)

第一个功能

def searchList(list, element):
   return element in list

你可以在一行

searchList = lambda x,y: y in x

对于第二,使用列表补偿,如另一个答案所示

答案 2 :(得分:2)

免责声明:我认为list_search没有重复的元素。否则,请使用此solution

您想要的是list_userslist_search的{​​{3}}集。

作为一种替代方法,您可以使用complement来区分两个列表,我认为它应该比0(n^2)的天真查找更高效。

>>> list_search = [1, 2, 3, 4]
>>> list_users = [4, 5, 1, 6]
>>> print set(list_search).difference(list_users)
>>> {2, 3}

答案 3 :(得分:2)

你正在用你的两个功能做的是建立补充,正如ozgur指出的那样。 使用集合是最容易的事情

>>> set([2,2,2,3,3,4])- set([1,2,2,4,5])
set([3])

您的list_search将成为第一个列表,list_users将成为第二个列表。 唯一的区别是,无论list_search

中的新用户多少次,您的新用户只会在结果中出现一次