简化多条件判断:优化5碱基DNA序列筛选Python代码
简化DNA序列筛选代码方案
核心思路
把碱基的禁止配对规则用字典映射统一管理,再封装成可复用的判断函数,彻底避免重复编写冗余的if语句。
具体实现步骤
- 定义禁止配对映射:用字典存储每个碱基对应的禁止配对碱基,比如
A对应T、T对应A、C对应G、G对应C。 - 封装判断函数:写一个极简函数,接收两个碱基,判断后者是否不属于前者的禁止配对碱基。
- 复用逻辑筛选序列:在循环中调用函数,同时验证首尾碱基对、第二与倒数第二碱基对的规则,两个条件都满足时才输出序列。
完整代码
import itertools # 定义碱基的禁止配对映射 forbidden_pair = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'} def is_valid(base1, base2): # 判断两个碱基是否符合规则:base2不是base1的禁止配对碱基 return base2 != forbidden_pair[base1] bases = "ATCG" for seq_tuple in itertools.product(bases, repeat=5): # 同时验证两组碱基对的规则 if is_valid(seq_tuple[0], seq_tuple[4]) and is_valid(seq_tuple[1], seq_tuple[3]): seq = "".join(seq_tuple) print(seq)
代码优势
- 逻辑复用:判断函数可直接用于任意位置的碱基对验证,后续新增其他位置的规则时,只需添加对应函数调用即可。
- 易于维护:若禁止配对规则发生变化,仅需修改
forbidden_pair字典,无需改动多处判断逻辑。
内容的提问来源于stack exchange,提问作者indigo
相关产品推荐
相关产品推荐

