Python-如何使用函数和多个返回值加快嵌套for循环的速度
我正在编写一个python代码来计算两个字符串之间是否存在模糊匹配。如果存在匹配,我必须存储字符串和平均匹配值。要比较的字符串来自一个包含数千个条目的列表 问题是代码执行时间太长。为了加快速度,我在这里查看了其他答案,但没有一个答案有来自循环中内部函数的多个返回值。在这里寻找优化的代码Python-如何使用函数和多个返回值加快嵌套for循环的速度,python,python-3.x,loops,for-loop,nested-loops,Python,Python 3.x,Loops,For Loop,Nested Loops,我正在编写一个python代码来计算两个字符串之间是否存在模糊匹配。如果存在匹配,我必须存储字符串和平均匹配值。要比较的字符串来自一个包含数千个条目的列表 问题是代码执行时间太长。为了加快速度,我在这里查看了其他答案,但没有一个答案有来自循环中内部函数的多个返回值。在这里寻找优化的代码 tokens=['abc','bcd','abe','efg','opq'] valid_list=['acb','abc','abf','bcd','rts','xyz'] for i in tokens:
tokens=['abc','bcd','abe','efg','opq']
valid_list=['acb','abc','abf','bcd','rts','xyz']
for i in tokens:
for j in valid_list:
token,valid_entry,avg_match=get_match(i,j)
if(token!=0):
potential_entry.append(valid_entry)
match_tokens.append(token)
ag_match.append(avg_match)
def get_match(i,j):
avg_value=(fuzz.ratio(token,chk_str)+fuzz.partial_ratio(token,chk_str)+fuzz.token_sort_ratio(token,chk_str)+fuzz.token_set_ratio(token,chk_str))/4
if(int(avg_value)>70):
return token,chk_Str,int(avg_value)
else:
return 0,0,0
我能看到的最明显的一点是,如果有任何模糊检查显然不是有效的匹配,您可能会短路 因此,不要把它们全部放在一行中,而是单独做,在得到其他比率之前检查它们是否低于阈值,优先检查你希望首先提供最清晰答案的比率 此外,考虑:
- 使用对象的单个列表避免附加到三个列表
- 为您的令牌和有效列表使用集合,以确保未进行任何重复检查
- 对于if语句,不将
强制转换为整数,在这里没有什么区别avg_值
- 在执行任何其他检查之前,添加显式的
检查以返回100%的比率i==j