Python遍历多整数列表按索引计算时解决'int' object is not subscriptable错误的方法
Python遍历多整数列表按索引计算时解决'int' object is not subscriptable错误的方法
嘿,我来帮你搞定这个问题!你遇到的TypeError: 'int' object is not subscriptable错误,核心原因应该是你错误地把整个列表转换成了整数——你的列表本身就是存储整数元素的容器,完全不需要把整个列表转成int类型!这么做会让你的列表变量变成单个整数,自然没法用下标[i]去访问元素了。
另外看你的代码还有两个小问题需要修正:一是重复给percentage1赋值,最后一个计算应该是percentage3(不然打印时会找不到这个变量);二是没有处理除数为0的情况,list2里有0元素,直接计算会触发ZeroDivisionError。
下面是修正后的完整代码:
user_list = [0, 1, 2] # 遍历次数由这个列表的长度决定 list2 = [2, 0, 2] list3 = [1, 0, 0] list4 = [1, 0, 0] list5 = [2, 0, 0] for i in range(len(user_list)): # 先判断除数是否为0,避免除零错误 if list2[i] == 0: print(f"索引{i}处的除数为0,无法计算百分比") continue # 按索引取出对应元素计算百分比,不再重复赋值 percentage1 = (list3[i] / list2[i]) * 100 percentage2 = (list4[i] / list2[i]) * 100 percentage3 = (list5[i] / list2[i]) * 100 # 打印当前索引的计算结果 print(f'''{percentage1}% {percentage2}% {percentage3}%''')
关键修正点说明:
- 不要转换整个列表:你的列表元素已经是整数,直接使用即可,转换整个列表会破坏列表的结构,导致无法用下标访问元素。
- 修复变量重复赋值问题:原来的代码把
percentage1赋值了三次,最后一个计算对应percentage3,这样打印时才不会报错。 - 增加除数为0的判断:提前检查
list2[i]是否为0,避免运行时出现除零错误,让代码更健壮。
备注:内容来源于stack exchange,提问作者help me.
相关产品推荐
相关产品推荐

