我只是在摆弄(孟德尔第一定律)的模拟。
在我可以让小动物交配并分析结果之前,必须生成种群,即,必须在列表中填充不同数量的三种不同类型的元组,而无需解包它们。
在尝试熟悉itertools时(我稍后会在交配部分需要组合),我想出了以下解决方案:
import itertools
k = 2
m = 3
n = 4
hd = ('A', 'A') # homozygous dominant
het = ('A', 'a') # heterozygous
hr = ('a', 'a') # homozygous recessive
fhd = itertools.repeat(hd, k)
fhet = itertools.repeat(het, m)
fhr = itertools.repeat(hr, n)
population = [x for x in fhd] + [x for x in fhet] + [x for x in fhr]
这将导致:
[('A', 'A'), ('A', 'A'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a'), ('A', 'a')]
是否有更合理、pythonic 或节省内存的方式来构建最终列表,例如不首先为三种类型的个人生成列表?