在一个非常大的列表中找到一个很大的元组

假设我有一个元组列表:

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 很小,则此代码可以正常工作,但是随着这两个项目的增加,完成它所需的时间也会更长。

我们如何解决这个问题?

回答

  1. 转换tuple_library并转换search_list为 python 集set()
  2. 返回相交两组,即,所有处于两个元件tuple_librarysearch_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)还是反之,都没有关系。


以上是在一个非常大的列表中找到一个很大的元组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>