You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用列表和循环统计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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:09:03