You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中执行for循环遇TypeError:列表索引需为整数而非列表的排查

解决TypeError: list indices must be integers or slices, not list的问题

嘿,我来帮你排查这个问题!你碰到的这个错误根源很明确:你在循环里把列表当成了索引来用。

咱们拆解下你的代码问题:
你定义了rowNum = [[0, 0, 0], [0, 0, 0], [0, 0, 0]],然后写了for row in rowNum:——这时候每次循环的row变量拿到的是rowNum里的子列表(比如第一次是[0,0,0]),而不是你想要的0、1、2这种整数索引。当你执行sq_list[row]时,Python自然会报错,因为列表的索引只能是整数或者切片类型,不能是另一个列表。

而且其实你定义的rowNum完全是多余的,因为你要处理的sq_list本身就是一个包含3个子列表的二维列表,直接遍历它就行。

给你两种修正方案:

方案1:直接遍历目标列表的行(最简洁)

不需要额外的索引,直接遍历sq_list里的每一行,再对每行的元素求和:

def add_rows(sq_list):
    for row in sq_list:
        total = 0
        for column in row:
            total += column
        print("Row total is:", total)

add_rows([[1, 3, 8], [2, 4, 6], [7, 9, 0]])

方案2:用enumerate获取索引(如果需要行号)

如果后续需要用到行的索引(比如打印第几行的总和),可以用enumerate同时拿到索引和对应的行:

def add_rows(sq_list):
    for row_idx, row in enumerate(sq_list):
        total = 0
        for column in row:
            total += column
        print(f"Row {row_idx + 1} total is:", total)

add_rows([[1, 3, 8], [2, 4, 6], [7, 9, 0]])

运行修正后的代码,会得到正确的输出:

Row total is: 12
Row total is: 12
Row total is: 16

内容的提问来源于stack exchange,提问作者Memphis-rgb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:27:30