匹配密码子

2024-09-28 05:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在正在学习嵌套池,但我不太懂。 我的任务是以以下格式返回所有匹配对:

[('AAG', 'TTC'), ('GAT', 'CTA'), ('TTG', 'AAC'), ('CAT', 'GTA'), ('GGC', 'CCG'), ('ATT', 'TAA'), ('TCT', 'AGA')]

这是我的代码:

^{pr2}$

它不起作用,我不知道为什么,我不太明白。我怎样才能使poolA和poolB根据提供的字典匹配?在


Tags: 格式attcatgatccgttcaacgta
2条回答

尝试在另一个池中搜索补码,而不是遍历poolA和poolB中的每个元素。在

def _complements(complements, str):
    return ''.join([complements[i] for i in str])

def matching_codons(complements, poolA, poolB):
    final = []
    for i in poolA:
        if _complements(complements, i) in poolB:
            final.append((i, _complements(complements, i)))
    return final
complements = {'A':'T', 'C':'G', 'T':'A', 'G':'C'}
poolA = ['AAG', 'TAC', 'CGG', 'GAT', 'TTG', 'GTG', 'CAT', 'GGC', 'ATT', 'TCT']
poolB = ['TAA', 'CTA', 'AAC', 'TTC', 'AGA', 'CCC', 'CCG', 'GTA']
print matching_codons(complements, poolA, poolB)

输出

^{pr2}$
>>> final = []
>>> for a in poolA:
...     for b in poolB:
...         count = 0
...         for x in range(len(a)):
...             if complements[a[x]] == b[x]:
...                 count += 1
...             else:
...                 break
...             if count == 3:
...                 final.append((a,b))
... 
>>> final
[('AAG', 'TTC'), ('GAT', 'CTA'), ('TTG', 'AAC'), ('CAT', 'GTA'), ('GGC', 'CCG'), ('ATT', 'TAA'), ('TCT', 'AGA')]

相关问题 更多 >

    热门问题