优化马匹亲缘校验程序的组合遍历代码,减少冗余计算
马匹亲缘关系校验程序优化方案
核心优化思路
利用Python标准库itertools.combinations生成无重复的父代组合,同时从根源规避子代作为自身父代的无效情况,替代低效的三层循环实现。
规则匹配逻辑
针对给定马匹ID列表(示例df = [10, 11, 12, 13]),严格生成符合以下规则的组合:
- 子代ID与两个父代ID均不重复
- 父代组合不考虑顺序,无重复实例(如
(11,12)与(12,11)仅保留一个)
优化后代码示例
import itertools def generate_valid_combinations(horse_ids): for offspring in horse_ids: # 生成排除当前子代的父代候选池 parent_candidates = [hid for hid in horse_ids if hid != offspring] # 直接生成无顺序重复的2元素父代组合 for parent_pair in itertools.combinations(parent_candidates, 2): # 传入校验函数处理有效组合 search_for_parents(offspring, parent_pair[0], parent_pair[1]) # 示例调用 df = [10, 11, 12, 13] generate_valid_combinations(df)
优化优势
- 消除冗余计算:
itertools.combinations原生生成无顺序重复的组合,无需额外去重步骤 - 规避无效场景:通过预过滤排除子代自身,从源头避免“子代作为父代”的无效组合
- 提升执行效率:相比三层循环,大幅减少不必要的迭代次数,马匹ID数量越大,性能提升越显著
- 代码简洁易维护:逻辑清晰,依赖标准库,无需复杂的手动循环控制
内容的提问来源于stack exchange,提问作者Viacheslav Grachev
相关产品推荐
相关产品推荐

