关于 .split() 的快速思考

Quick thought regarding .split()

所以我需要使用 python 制作一个 punnett 正方形。 punnett square 基本上是一种确定可见且有时 non-visible 特征的简单方法。到目前为止,我的代码采用了两个 parent 的基因构成,并找到了 A 和 G 的所有不同组合。此时我遇到的唯一问题是,当我打印时,字母的顺序不正确。例如:对于每个 "child's" 可能的基因构成,有两个 A(大写或小写)和两个 G(大写或小写)。我做了相当多的研究,SOF 上唯一与我的有点相关的其他 question/answer 不清楚,也没有用。我的代码如下。

import itertools
import string

#genepool_1 refers to parent 1's alleles
#genepool_2 refers to parent 2's alleles
#outerlayerf1 refers to both parent genetic contributions to the first generation of offspring
#f1 refers to the punnett square of the first generation of offspring

#parent 1
genepool_1 = ['Aa','Gg']
parent_1 = sorted(list(itertools.product(*genepool_1)))

#parent 2
genepool_2 = ['aa','GG']
parent_2 = sorted(list(itertools.product(*genepool_2)))


#F1 or Parent 1/2 Offspring
outerlayerf1 = [parent_1,parent_2]
f1___________ = list(itertools.product(*outerlayerf1))
f1__________ = str(f1___________)
f1_________ = f1__________.replace('[','')
f1________ = f1_________.replace(']','')
f1_______ = f1________.replace("'",'')
f1______ = f1_______.replace(' ','')
f1_____ = f1______.replace(')),((', ') (')
f1____ = f1_____.replace('((', '(')
f1___ = f1____.replace('))',')')
f1__ = f1___.replace('),(','')
f1_ = f1__.replace(',','')
print f1_

并打印出

(AGaG) (AGaG) (AGaG) (AGaG) (AgaG) (AgaG) (AgaG) (AgaG) (aGaG) (aGaG) (aGaG) (aGaG) (agaG) (agaG) (agaG) (agaG)

什么时候应该打印

(AaGG) (AaGG) (AaGG) (AaGG) (AagG) (AagG) (AagG) (AagG) (aaGG) (aaGG) (aaGG) (aaGG) (aagG) (aagG) (aagG) (aagG)

(我知道每个选项都打印了 4 次。需要这样才能获得最准确的概率)

非常感谢所以

伊莱

我对与这个问题相关的一切感到非常困惑,但我想我已经解决了这个问题,所以至少我希望能有所帮助:

f1 = [
     thingies[0][0] + thingies[1][0] + thingies[0][1] + thingies[1][1]
     for thingies in zip(parent_1, parent_2)
] * 4
print(f1)

另一种使用 zip() 函数和 str.jon() 获取它的方法 -

>>> genepool_1 = ['Aa','Gg']
>>> parent_1 = sorted(list(itertools.product(*genepool_1)))
>>>
>>> #parent 2
... genepool_2 = ['aa','GG']
>>> parent_2 = sorted(list(itertools.product(*genepool_2)))
>>>
>>>
>>> #F1 or Parent 1/2 Offspring
... outerlayerf1 = [parent_1,parent_2]
>>> f1 = list(itertools.product(*outerlayerf1))
>>> f2 = [''.join(''.join(i) for i in list(zip(*x))) for x in f1]
['AaGG', 'AaGG', 'AaGG', 'AaGG', 'AagG', 'AagG', 'AagG', 'AagG', 'aaGG', 'aaGG', 'aaGG', 'aaGG', 'aagG', 'aagG', 'aagG', 'aagG']