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

如何获取2D/3D列表内层元素长度并解决列表索引TypeError报错

错误原因

  • 核心问题是for i in list遍历逻辑错误:遍历直接拿到的是外层列表的每一个子元素(比如首次循环的i就是[0, [1, 2, 3]]这个列表本身),不是列表的下标索引。后续用list[i][1]相当于把列表元素作为下标传入,自然触发「列表索引必须是整数或切片,不能是列表」的类型错误。
  • 额外不规范点:使用Python内置关键字list作为变量名/参数名,会覆盖内置的列表类型,后续如果要用到list()转型等操作会出错,建议更名。

修复方案

方法1:直接遍历元素取值

不需要通过索引取值,直接用遍历得到的子元素取第二层的列表即可,修复后代码:

def max_inner_list_length(input_list):
    maximum = 0
    for item in input_list:
        current_len = len(item[1])
        if current_len > maximum:
            maximum = current_len
    return maximum

# 测试用列表
test_list = [[0, [1, 2, 3]], [1, [0, 1, -3, 8, 5]], [2, [0, 7, 2, 1, -5]], [3, [0, 4, 1, -9]], [4, [0, 6, -2, 3]],
[5, [0]], [6, [0, 2, -1, 8]], [7, [0, -7, 3]], [8, [0, 8, 5, 6, 3]], [9, [0, -4, 1, 9]]]

print(max_inner_list_length(test_list))

运行后输出为5,符合预期。

方法2:索引遍历写法

如果习惯通过索引访问,可修改遍历逻辑为遍历下标范围:

def max_inner_list_length(input_list):
    maximum = 0
    for i in range(len(input_list)):
        current_len = len(input_list[i][1])
        if current_len > maximum:
            maximum = current_len
    return maximum

内容的提问来源于stack exchange,提问作者metsys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:06:06