在一个非常大的列表中找到一个很大的元组
假设我有一个元组列表:
tuple_library = [('a', 'z', '1'), ('r', '3', 'b'), ('m', '1', 'l')]
我想要做的是检查 tuple_library 中是否存在以下元组。
search_list = [('a','a','1'), ('m', '1', 'l')]
def search_the_tupple(t_lib, s_list):
for item in t_lib:
if item in s_list:
return(item)
print(search_the_tupple(tuple_library, search_list))
如果 tuple_library 和 search_list 很小,则此代码可以正常工作,但是随着这两个项目的增加,完成它所需的时间也会更长。
我们如何解决这个问题?
回答
- 转换
tuple_library并转换search_list为 python 集set() - 返回相交两组,即,所有处于两个元件
tuple_library和search_list
tuple_library = [('a', 'z', '1'), ('r', '3', 'b'), ('m', '1', 'l')]
search_list = [('a','a','1'), ('m', '1', 'l')]
def search_the_tupple(t_lib, s_list):
return set(t_lib).intersection(set(s_list))
print(search_the_tupple(tuple_library, search_list))
这是假设您希望保留元组的顺序。(这样 a('m', '1', 'l')会出现但 a('m', 'l', '1')不会出现。
仅供参考:无论您是这样做t_lib.intersection(s_list)还是反之,都没有关系。