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

Python如何使用for循环迭代生成20代DNA突变序列列表

首先需要修正原mutate_v1函数的缩进错误:原函数的return语句位于for循环内部,遍历第一个碱基后就会直接返回结果,几乎不会触发预期的突变,修正后的代码如下:

import random

def mutate_v1(sequence, mutation_rate):
    dna_list = list(sequence)
    for i in range(len(sequence)):
        r = random.random()
        if r < mutation_rate:
            mutation_site = random.randint(0, len(dna_list) - 1)
            dna_list[mutation_site] = random.choice(list('ATCG'))
    # return 移到for循环外,遍历完所有碱基再返回突变后的序列
    return ''.join(dna_list)

迭代到第20代的实现方案

方案1:仅保留最终第20代结果

# 初始种群G0
current_gen = ['CTGAA', 'CTGAA', 'CTGAA', 'CTGAA', 'CTGAA']
mutation_rate = 0.01
total_generations = 20

for _ in range(total_generations):
    # 基于当前代突变得到下一代
    current_gen = [mutate_v1(seq, mutation_rate) for seq in current_gen]

G20 = current_gen
print(G20)

方案2:保留所有世代的序列数据(方便后续回溯分析)

# 存储所有世代的列表,索引0对应G0,索引20对应G20
all_generations = []
all_generations.append(['CTGAA', 'CTGAA', 'CTGAA', 'CTGAA', 'CTGAA'])
mutation_rate = 0.01

for _ in range(20):
    # 取上一代的所有序列
    last_gen = all_generations[-1]
    current_gen = [mutate_v1(seq, mutation_rate) for seq in last_gen]
    all_generations.append(current_gen)

# 直接通过索引获取对应世代的序列列表
G20 = all_generations[20]

内容的提问来源于stack exchange,提问作者user8769986

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:45:00