我必须使用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尺寸非常大时。
答案 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]