无法在python中使用for循环遍历列表

无法在python中使用for循环遍历列表,python,python-3.x,list,Python,Python 3.x,List,我的程序使用re库中的findall函数对文件中的所有数字求和: fh=open(fname) lst=re.findall('[0-9]+',fh.read()) findall应该返回一个列表,对吗?所以我应该这样循环: for i in lst : s=s+int(lst[i]) 但我得到的回溯错误是: s=s+int(lst[i]) TypeError:列表索引必须是整数或片,而不是str 现在,如果我使用range(),它就可以正常工作了: for i in range(len

我的程序使用
re
库中的
findall
函数对文件中的所有数字求和:

fh=open(fname)
lst=re.findall('[0-9]+',fh.read())
findall
应该返回一个列表,对吗?所以我应该这样循环:

for i in lst :
 s=s+int(lst[i])
但我得到的回溯错误是:

s=s+int(lst[i])
TypeError:列表索引必须是整数或片,而不是str
现在,如果我使用
range()
,它就可以正常工作了:

for i in range(len(lst))
我只是不明白为什么我会得到这个错误原因列表,默认情况下是用整数索引的,对吗?
有人能给我解释一下吗?谢谢大家!

对于lst中的i:
已经逐个取出元素,您不需要为列表编制索引。因此,请尝试:

for i in lst :
    s=s+int(i)

当您试图从列表中取出元素时,
fori-in-lst:
完成了这项工作。例如:

lst = [1,2,3,4]
for i in lst:
    print(i)
给出输出:

1
2
3
4

有两种方法可以做到这一点:

for i in range(len(lst)):
 s += int(lst[i])
第二:

for i in lst:
 s += int(i)

i
是一个字符串,因此
lst[i]
失败


您可以使用
lst[int(i)]
将其转换为int,但这并不是您真正想要做的。查看如何修复它。

谢谢,我在列表中是个傻瓜,我现在明白了欢迎来到这里!检查lst中的i:s=s+int(i)。。。但最好的办法是让演员们试一试……FWIW,第二种方式是首选的风格。你为什么编辑我的答案?这里面没有错。您刚刚插入了空字符。@Joshua,请参见上面Fahad的评论。法哈德,我同意,你应该把它还原。冒号前加空格是不好的英语语法。