[英]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.