python如何优化搜索功能

python如何优化搜索功能,python,list,optimization,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:

有没有办法优化这两个功能

第一个功能:

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)
第二个功能:

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)
是的:

第一个函数基本上检查成员资格,在这种情况下,您可以使用。第二个功能可以简化为a,根据您的情况从
列表搜索中过滤出元素。

第一个功能

def searchList(list, element):
   return element in list
你可以在一条线上完成

searchList = lambda x,y: y in x

对于第二个问题,使用一个列表comp,如另一个答案中所示。

免责声明:我假设
列表搜索
没有重复的元素。否则,请使用此选项

您想要的正是
list\u search
中的
list\u用户集

作为一种替代方法,您可以使用它来获得两个列表之间的差异,我认为它应该比使用
0(n^2)
的简单查找更有效


正如ozgur所指出的,您使用这两个函数所做的是构建补充。 在这里使用集合是最简单的事情

>>> set([2,2,2,3,3,4])- set([1,2,2,4,5])
set([3])
您的
list\u搜索
将是第一个列表,您的
list\u用户
将是第二个列表。
唯一的区别是,新用户在结果中只出现一次,无论它在
列表中的出现频率如何\u search

,在请求更快的方法做某事之前,您应该首先解释您正在尝试做什么!将
列表\u用户
转换为
集合
并使用
操作符中的
检查项目。优化什么?可读性?速度内存使用情况?无论哪种方式,因为您的问题是关于工作代码的,所以它更适合于
中的
是O(n)表示列表。如果你真的想发疯,你可以写一个二进制搜索(如果适用的话),这将减少到logn!说得好!我第一次看到这个问题并投票给第一个答案!但我错过了这个优雅的答案!