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

时间:2020-04-12 17:02:50

标签: python python-3.x list

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

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: list indices must be integers or slices, not str

现在,如果我使用range(),它就可以正常工作:

for i in range(len(lst))

我只是不明白为什么会出现此错误,原因是默认情况下列表是用整数索引的吗? 有人可以向我解释吗?谢谢!

3 个答案:

答案 0 :(得分:3)

您有两种方法可以做到:

$mysqli = new mysqli("localhost","database","username","password");
$sql = "SELECT * FROM `tableB`";
$statement = $mysqli->prepare($sql);
$statement->execute();      
$result = $statement->get_result();
while($row = $result->fetch_object()) {
   echo $row->book; //MyBook
   echo $row->userID, //1
}

第二:

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

答案 1 :(得分:1)

for i in lst:已经一对一地取出了元素,您不需要索引列表。所以尝试:

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

当您尝试将元素从列表中删除时,for i in lst:会执行此操作。例如:

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

给出输出:

1
2
3
4

答案 2 :(得分:1)

i是字符串,所以lst[i]失败。

您可以使用lst[int(i)]将其转换为int,但这并不是您真正想做的。有关解决方法,请参见Joshua's answer