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

Python中用索引式for循环遍历嵌套列表?代码报错排查

基于索引遍历嵌套列表的问题分析与解决

没问题,用基于索引的for循环遍历嵌套列表完全可行,咱们来看看你代码里的两个关键错误:

  • 第一个错误:内层循环的索引对象搞错了
    你写的for inner in range(len(outer))里,outer是外层循环的索引值(比如0、1这类整数),不是嵌套列表里的子列表。整数类型没有len()方法,这就触发了控制台里的TypeError。正确的做法是先通过外层索引拿到对应的子列表,再取它的长度,也就是range(len(my_lists[outer]))。

  • 第二个错误:变量名拼写错误
    代码里的lists[outer][inner]写错了变量名——你的函数参数是my_lists,这里应该改成my_lists[outer][inner],否则会因为找不到lists变量报错(如果全局没有定义这个变量的话)。

修正后的代码

n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]
def flatten(my_lists):
    results = []
    for outer in range(len(my_lists)):
        # 先获取当前外层索引对应的子列表
        sub_list = my_lists[outer]
        for inner in range(len(sub_list)):
            results.append(sub_list[inner])
    return results
print(flatten(n))  # Python3中print是函数,需要加括号;Python2可省略,但推荐统一使用括号写法

运行这段代码后,会输出预期的扁平化列表:[1, 2, 3, 4, 5, 6, 7, 8, 9]。

额外补充:更简洁的常规遍历方式

虽然你要的是基于索引的写法,但常规的直接遍历元素方式会更简洁易读,这里也给你参考下:

def flatten(my_lists):
    results = []
    for sub_list in my_lists:
        for item in sub_list:
            results.append(item)
    return results

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:51:28