簡體   English   中英

僅遍歷列表列表中的第一個列表

[英]Only iterating through first list in a list of lists

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']]

看起來只有蛋白質中的第一個列表被迭代而不是所有列表。 此外,我只需要相應的縮寫,而不需要 output 中字符串中的字母。

注意:縮進必須到位。

就像約翰戈登說的那樣,你在最后一個 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM