所以我需要制作一个程序,用一个基因产生几代随机同等拟合理论生物的等位基因。
我从包含一个突变等位基因2的列表开始,然后我为下一代选择3个等位基因,并将它们附加到下一代的列表中
import random
p = [1,1,1,2]
from random import choice
n=len(p)-1
for i an range(n):
p.append(choice(p))
问题是,这不会删除未选择的等位基因。
我该如何调整这个程序,以便从列表中删除未选择的等位基因?
感谢
- 修改
程序的输出看起来像这样
[1,1,1,2,1,2,1]
这将代表具有2个不同等位基因的7种生物的群体。这代表第2代,因为存在3个选择的等位基因的双等位基因。这个模拟了3个选择等位基因的2个后代。 但未选择的等位基因(在这种情况下为1)不应该存在于这一代。 所以我想知道的是如何将其从列表中删除
NB。抱歉有点啰嗦
答案 0 :(得分:1)
import random
n = 4
A = [i for i in xrange(n)]
B = [1,1,1,2]
NextGeneration = []
for i in xrange(n-1):
last = n - i - 1
actualChoice = random.randint(0,last)
NextGeneration.append(B[A[actualChoice]])
auxSwap = actualChoice
A[actualChoice] = A[last]
答案 1 :(得分:1)
我不确定我完全理解你的问题,但这是尝试解决方案:
first_gen = [1,1,1,2]
second_gen = first_gen + random.sample(first_gen, len(first_gen)-1)
这有帮助吗?