生成具有递归功能的列表

时间:2019-01-12 13:01:34

标签: python recursion

我正在学习Python,并试图解决Exercism提供的一些练习。如果我运行一次该函数,该代码示例将正常工作。我希望proteins(string)从一个空列表开始时会更频繁地被调用,但是它会继续早期生成的列表。我找到了一种解决方法,但不了解Python的这种行为。有人可以给我解释一下吗?

aminoacids = {
    'AUG' : 'Methionine', 'UUU' : 'Phenylalanine', 'UUC' : 'Phenylalanine', 'UUA' : 'Leucine',
    'UUG' : 'Leucine',  'UCU' : 'Serine', 'UCC' : 'Serine', 'UCA' : 'Serine', 'UCG' : 'Serine',
    'UAU' : 'Tyrosine', 'UAC' : 'Tyrosine', 'UGU' : 'Cysteine', 'UGC' : 'Cysteine', 'UGG' : 'Tryptophan',
    'UAA' : 'STOP', 'UAG' : 'STOP', 'UGA' : 'STOP'
}

def proteins(strand, polypeptide = []):
    global aminoacids

    if len(strand) < 3 or aminoacids[strand[0:3]] == 'STOP':
        return polypeptide

    polypeptide.append(aminoacids[strand[0:3]])

    return proteins(strand[3:], polypeptide)

0 个答案:

没有答案