无法在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的评论。法哈德,我同意,你应该把它还原。冒号前加空格是不好的英语语法。