python - 仅遍历列表列表中的第一个列表
问题描述
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']]
看起来只有蛋白质中的第一个列表被迭代而不是所有列表。此外,我只需要相应的缩写,而不是输出中字符串中的字母。
解决方案
注意:缩进必须到位。
就像约翰戈登说的那样,你在最后一个 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
推荐阅读
- java - 使用带有多个分隔符的正则表达式(Java / Kotlin)拆分文本
- javascript - 是否可以将表单输入到另一个 html 表单中
- bash - .bashrc 中的别名失败 vs 命令行成功
- javascript - 如何从我的 firebase 用户列表中获取随机用户?
- wordpress - WordPress htaccess 图像重定向
- arrays - 在 Firebase 中读取数组
- authentication - Symfony 4 中的 Guard Authenticator
- vba - 禁用图像 - Selenium VBA Chromedriver
- css - 100vh 不覆盖整个屏幕,屏幕尺寸小于 326px
- javascript - 通过 JSON 循环并根据位置获取数组