首页 > 解决方案 > 仅遍历列表列表中的第一个列表

问题描述

def translateStrand1(dnaStrand):

          
protein = []
proteinList = []
start = dnaStrand.find('ATG')
end = len(dnaStrand)
totalLength = dnaStrand[start:end]

remove = totalLength.split('TAG')
for str in remove:
    split_str = [str[i:i+3] for i in range(0, len(str), 3)]
    protein.append(split_str)
    print(protein)
    for list in protein:
        for i in list:
            protein = (aminoAcid(i))
            proteinList.append(protein)
        return proteinList

当前结果;

>>> translateStrand1('ABCATGTATGCCTAGATGCTGCGCTAGATGGTTGCA')
    [['ATG', 'TAT', 'GCC']]
    ['Met', 'Tyr', 'Ala']

给定字符串所需的结果;

>>> translateStrand1('ABCATGTATGCCTAGATGCTGCGCTAGATGGTTGCA')
    [['Met, 'Tyr', 'Ala'], ['Met', 'Lev', 'Arg'], ['Met', 'Val', 'Ala']]

看起来只有蛋白质中的第一个列表被迭代而不是所有列表。此外,我只需要相应的缩写,而不是输出中字符串中的字母。

标签: pythonpython-3.x

解决方案


注意:缩进必须到位。

就像约翰戈登说的那样,你在最后一个 for 循环中错了。而且我看到你的示例代码在很多地方都是错误的,是打字错误吗?您必须return proteinList退出 for 循环。这是正确的代码:

def translateStrand1(dnaStrand):
    protein = []
    proteinList = []
    start = dnaStrand.find('ATG')
    end = len(dnaStrand)
    totalLength = dnaStrand[start:end]

    remove = totalLength.split('TAG')
    for str in remove:
        split_str = [str[i:i+3] for i in range(0, len(str), 3)]
        protein.append(split_str)
    print(protein)
    for list in protein:
        for i in list:
            protein = (aminoAcid(i))
            proteinList.append(protein)
    return proteinList # this line is fixed

推荐阅读