如何优化Python中的多if分支冗余代码?附代码示例
优化后的Python代码
核心优化思路
解决原代码中重复正则匹配、冗余变量与判断的问题,同时保留原逻辑的优先级(后续匹配结果覆盖前面的)。
优化代码(假设date_str1/2/3初始为空)
import re # 按原逻辑的优先级排序(p3匹配结果会覆盖p2、p1) patterns = [p3, p2, p1] find_list = [] date_str = "" for pattern in patterns: matches = re.findall(pattern, path) if matches: find_list = matches date_str = f"{matches[0]} " break # 找到最高优先级的匹配后直接终止循环
若date_str1/2/3有初始值的适配版本
如果原代码中date_str1、date_str2、date_str3本身带有初始内容,可调整为:
import re # 将正则与对应初始date_str配对,按优先级排序 pattern_date_pairs = [ (p3, date_str3), (p2, date_str2), (p1, date_str1) ] find_list = [] date_str = "" for pattern, initial_date in pattern_date_pairs: matches = re.findall(pattern, path) if matches: find_list = matches date_str = f"{initial_date}{matches[0]} " break
优化点说明
- 减少重复计算:每个正则仅执行一次
re.findall,避免原代码中多次重复匹配的性能浪费。 - 简化逻辑结构:用循环替代重复的
if判断,消除冗余变量(如find_list1/2/3、date_str1/2/3),代码更简洁易维护。 - 明确优先级逻辑:通过排序和提前终止循环,清晰体现原代码中“后续匹配覆盖前面结果”的优先级规则。
内容的提问来源于stack exchange,提问作者fleamon
相关产品推荐
相关产品推荐

