Python。如何优化搜索功能
Python. How to optimize search functions
有什么办法可以优化这两个功能?
第一个函数:
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)
是:
return_list = [x for x in list_search if x not in list_users]
第一个函数基本上检查成员资格,在这种情况下,您可以使用 in
keyword. The second function can be reduced to a list comprehension 根据您的条件从 list_search
列表中过滤掉元素。
第一个函数
def searchList(list, element):
return element in list
你可以在 1 行内完成
searchList = lambda x,y: y in x
对于第二个,使用其他答案中所示的列表组合
免责声明: 我假设 list_search
没有重复元素。否则,使用此 solution.
你要的正是list_search
中list_users
的集合complement。
作为替代方法,您可以使用 sets
来获取两个列表之间的差异,我认为它应该比使用 0(n^2)
.[=19 的简单查找更高效=]
>>> list_search = [1, 2, 3, 4]
>>> list_users = [4, 5, 1, 6]
>>> print set(list_search).difference(list_users)
>>> {2, 3}
正如 ozgur 指出的那样,您对这两个函数所做的是构建互补。
使用集合是这里最简单的事情
>>> set([2,2,2,3,3,4])- set([1,2,2,4,5])
set([3])
您的 list_search
将是第一个列表,您的 list_users
将是第二个列表。
唯一的区别是您的新用户在结果中只出现一次,无论它在 list_search
中出现的频率如何
有什么办法可以优化这两个功能?
第一个函数:
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)
是:
return_list = [x for x in list_search if x not in list_users]
第一个函数基本上检查成员资格,在这种情况下,您可以使用 in
keyword. The second function can be reduced to a list comprehension 根据您的条件从 list_search
列表中过滤掉元素。
第一个函数
def searchList(list, element):
return element in list
你可以在 1 行内完成
searchList = lambda x,y: y in x
对于第二个,使用其他答案中所示的列表组合
免责声明: 我假设 list_search
没有重复元素。否则,使用此 solution.
你要的正是list_search
中list_users
的集合complement。
作为替代方法,您可以使用 sets
来获取两个列表之间的差异,我认为它应该比使用 0(n^2)
.[=19 的简单查找更高效=]
>>> list_search = [1, 2, 3, 4]
>>> list_users = [4, 5, 1, 6]
>>> print set(list_search).difference(list_users)
>>> {2, 3}
正如 ozgur 指出的那样,您对这两个函数所做的是构建互补。 使用集合是这里最简单的事情
>>> set([2,2,2,3,3,4])- set([1,2,2,4,5])
set([3])
您的 list_search
将是第一个列表,您的 list_users
将是第二个列表。
唯一的区别是您的新用户在结果中只出现一次,无论它在 list_search