代码之家  ›  专栏  ›  技术社区  ›  Mauro Gentile

提取至少包含另一个列表项的列表元素的有效方法

  •  0
  • Mauro Gentile  · 技术社区  · 8 年前

    我有两张清单。 另一个是术语列表。叫它B。

    我需要从字符串列表中提取至少包含术语列表中包含的术语的元素。

    嵌套for循环显然是一种可能性:

    for a in A:
        for b in B:
            if b in a:
                print (a)
    

    这是O(n^2),这不是一个好方法,因为a非常长(10亿个字符串!)。

    我认为的另一个解决方案是:

    我还没有计时,但应该会稍微好一点。

    任何关于替代方法的提示都是非常受欢迎的!

    1 回复  |  直到 8 年前
        1
  •  0
  •   Reut Sharabani    8 年前

    仅使用集合:

    from itertools import chain
    
    set_a = set(a)
    terms = set(chain.from_iterable(b))
    has_terms = set_a & terms
    
    推荐文章