Python遍历子列表时出现'list'无法转为整数的TypeError问题求助
问题分析与解决
首先明确报错原因:你第二个循环里写的for j in range(0,res),res是通过list[-n:]得到的列表(比如这里是[6,7,8]),但range()函数的参数必须是整数,不能传入列表,因此触发TypeError。
你误以为第一个循环和第二个循环逻辑一致,但实际上第一个循环用的是range(0,n),n是整数3,并非原列表list——第一个循环根本没把列表作为参数传给range,所以能正常运行,这是你混淆的核心点。
修正后的代码方案
方案1:修复循环逻辑
把第二个循环的range参数改成len(res),len(res)会返回列表的长度(也就是你设定的n):
my_list = [1,2,3,4,5,6,7,8] # 不要用list当变量名,会覆盖Python内置的list类型 n=3 res = my_list[-n:] list_i=[] list_j=[] for i in range(0,n): list_i.append(my_list[i]) print(list_i) # 建议把print放在循环外,避免每次循环都打印一次 for j in range(0, len(res)): list_j.append(res[j]) print(list_j)
方案2:更简洁的切片写法(推荐)
Python列表的切片语法本身就能直接获取前n个和后n个元素,完全不需要循环,代码更简洁高效:
my_list = [1,2,3,4,5,6,7,8] n = 3 list_i = my_list[:n] # 获取前n个元素 list_j = my_list[-n:] # 获取后n个元素 print(list_i) # 输出 [1,2,3] print(list_j) # 输出 [6,7,8]
额外提醒:不要用list作为变量名,这会覆盖Python内置的list类型,可能引发后续难以排查的错误。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

