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

