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

Python 提取至少包含另一个列表项的列表元素的有效方法,python,performance,list,Python,Performance,List,我有两张清单。 一个是字符串列表。叫它A。 另一个是术语列表。叫它B 我需要从字符串列表中提取至少包含术语列表中包含的术语的元素 嵌套for循环显然是一种可能性: for a in A: for b in B: if b in a: print (a) 这是O(n^2),这不是一个好方法,因为a非常长(10亿个字符串!) 我认为的另一个解决方案是: 拆分并按长度排序,然后使用倒排列表方法 我还没有计时,但应该会稍微好一点 任何关于替代方法的提示都

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

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

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

for a in A:
    for b in B:
        if b in a:
            print (a)
这是O(n^2),这不是一个好方法,因为a非常长(10亿个字符串!)

我认为的另一个解决方案是: 拆分并按长度排序,然后使用倒排列表方法

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

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

只需使用集合:

from itertools import chain

set_a = set(a)
terms = set(chain.from_iterable(b))
has_terms = set_a & terms

你能用任何一个测试用例来解释吗?同意,你的数据是什么形状还不清楚。酷。和蔼可亲。我会计时的。谢谢大家!@用户3623123我不确定它是否正确。您能添加一个输入和输出的示例吗?@user3623123:是的,请提供示例A、B和预期结果,以便我们进行验证。