如何循环列表?

时间:2013-09-07 03:53:50

标签: python loops for-loop

我正在尝试遍历列表,但除非我指定要循环的列表的哪个部分,否则它不起作用(我希望它遍历整个列表而不仅仅是一个部分,例如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。它仍然没有打印任何东西!

2 个答案:

答案 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 = 0words[a]将始终为长度为1且具有第零个元素。所以,你的循环只会运行一次。

直接迭代列表:

for i in words:
    if i in "ATGC":
        final1 = final1 + i