我正在尝试遍历列表,但除非我指定要循环的列表的哪个部分,否则它不起作用(我希望它遍历整个列表而不仅仅是一个部分,例如list1 [1]等
input1 = input("Corrupted: ")
words = input1.split()
a = 0
final1 = ""
for i in words[a]:
a = a + 1
if i in "ATGC":
final1 = final1 + i
print(final1)
当我运行它时,它什么都没打印出来。但是,如果我将'a'更改为硬编码0,则仅打印出单词[0]的正确输入。我不明白,因为我分配了一个0,每次增加1。它仍然没有打印任何东西!
答案 0 :(得分:2)
您可以直接在列表上进行迭代:
for i in words:
if i in "ATGC":
final1 = final1 + i
print(final1)
有更简单的方法可以写这个,比如列表理解:
final1 = [i for i in words if i in "ATGC"]
或者,如果您在输入中一次处理单个字母,则使用冻结套装可获得更好的性能:
acids = frozenset(('A', 'T', 'G', 'C'))
final1 = [i for i in words if i in acids]
其中任何一个都会返回一个字符串列表 - 要返回一个字符串,请使用join
:
print (''.join(final1))
答案 1 :(得分:0)
for i in words[a]
没有按照您的想法行事。对于a = 0
,words[a]
将始终为长度为1且具有第零个元素。所以,你的循环只会运行一次。
直接迭代列表:
for i in words:
if i in "ATGC":
final1 = final1 + i