如何使用列表和循环统计DNA双核苷酸对的出现次数并导出结果
双核苷酸计数简化实现(仅用列表+循环语法)
核心实现逻辑不用逐个定义16种双核苷酸的计数变量,通过批量生成目标序列列表+循环遍历的方式完成统计和写入,同时兼容大小写输入。
实现要点
- 大小写兼容:读取到原始DNA序列后统一转为大写(或小写),后续统计统一用相同大小写的双核苷酸匹配即可,无需单独处理混合大小写的情况。
- 自动生成所有双核苷酸列表:先定义4种单核苷酸的基础列表,通过两层循环拼接生成全部16种双核苷酸,无需手动枚举。
- 循环统计计数:遍历双核苷酸列表,逐个统计出现次数,将「双核苷酸序列, 计数」成对存入结果列表。
- 循环写入结果:遍历结果列表,逐行按要求的制表符分隔格式写入新文件即可。
完整可运行代码
# 1. 读取DNA序列,统一转大写兼容大小写输入 with open("dna1.txt", "r") as f: dna_seq = f.read().strip().upper() # 2. 生成所有可能的双核苷酸列表 nucleotides = ['A', 'T', 'C', 'G'] dinucleotides = [] # 两层循环拼接双核苷酸 for n1 in nucleotides: for n2 in nucleotides: dinucleotides.append(n1 + n2) # 3. 循环统计每个双核苷酸的出现次数 count_result = [] for dinu in dinucleotides: cnt = dna_seq.count(dinu) count_result.append([dinu, cnt]) # 4. 循环写入制表符分隔的结果文件 with open("dinucleotide_count.txt", "w") as f: for item in count_result: # 按 双核苷酸\t计数 格式写入,每行加换行 f.write(f"{item[0]}\t{item[1]}\n")
如果使用Python2运行,把最后写入行的f-string格式改为f.write(item[0] + "\t" + str(item[1]) + "\n")即可,和你原有写法逻辑完全一致。
内容的提问来源于stack exchange,提问作者Banana nana
相关产品推荐
相关产品推荐

