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
相关产品推荐
相关产品推荐

