使用Python从字符串列表中删除短语字典的更快方法

时间:2016-08-08 02:03:26

标签: python

我必须使用Python

从字符串列表中删除短语词典

字符串列表L1。示例:L1 = ['Programmer New York', 'Programmer San Francisco']

词组L2的词典(所有词都不止一个词)。示例:L2={'New York', 'San Francisco'}

对于L1中的每个字符串,预期输出是删除L2中存在的子字符串。因此输出将为res=['Programmer', 'Programmer']

def foo(L1, L2):
    res = []
    print len(L1)
    for i in L1:
        for j in L2:
            if j in i:
                i = i.replace(j, "")
        res.append(i)
    return res

我当前的程序是一个暴力双循环。但是有可能提高性能吗?特别是当L1尺寸非常大时。

2 个答案:

答案 0 :(得分:1)

尝试使用map()和re,

import re
res = map(lambda i, j: re.sub(" "+i, '', j), L2, L1)

i之前的双引号用于消除程序员之后的尾随空格。

return list(res)

P.S。只有在使用Python 3时才需要显式返回列表。请告诉我这是否会提高您的速度。

答案 1 :(得分:0)

您可以使用列表推导来执行以下操作:

l1 = ['Programmer New York', 'Programmer San Francisco']
l2=['New York', 'San Francisco']
a=[x.split(y) for x in l1 for y in l2 if y in x]
res=["".join(x) for x in a]