首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -如何加快使用函数和多个返回值嵌套for循环速度

Python -如何加快使用函数和多个返回值嵌套for循环速度
EN

Stack Overflow用户
提问于 2019-11-22 18:31:22
回答 1查看 108关注 0票数 1

我正在写一段python代码来计算两个字符串之间是否有任何模糊匹配。如果有匹配,我必须存储字符串和平均匹配值。要比较的字符串来自一个包含数千个条目的列表,问题是代码执行时间太长。为了加快速度,我在这里查看了其他答案,但没有一个在循环中有来自内部函数的多个返回值。在这里寻找优化的代码...

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-11-22 18:38:45

我能看到的主要明显的事情是,如果有任何明显不是有效匹配的,你可以短路模糊检查。

因此,与其在一行中完成所有这些操作,不如单独完成,并在获得其他比率之前检查它们是否低于阈值,优先检查您期望为此提供最清晰答案的比率。

另外,请考虑:

  • 使用对象的单个列表以避免必须将标记和有效列表附加到三个列表
  • 使用sets

your tokens和valid list以确保不会执行任何重复的检查,而不是将avg_value转换为if语句的整数,这在这里没有真正的区别。

  • 在显式<代码>D9中添加检查,以便在执行任何其他检查之前返回100%的比率<代码>H210<代码>F211
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58992332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档