Python运行报TypeError: 'list' object is not callable如何解决
报错根因
TypeError: 'list' object is not callable 是因为你把Python列表的索引取值语法写错了:
- 列表取元素必须用*方括号
[]*包裹索引,比如fruits[i] - 你写的
fruits([i])用了小括号,Python会把这行识别为「调用fruits函数,传入参数[i]」,但你提前把fruits定义成了列表,列表不是可调用的函数/方法,所以直接抛出类型错误。
代码里的其他错误
除了触发报错的括号问题,还有两处逻辑bug:
- 索引位置多套了一层方括号:就算你把外面的小括号改成方括号,
fruits[[i]]也是错的——索引是整数i,不是装着i的列表,不需要额外套[] - if块里的
i+1是无效代码:这行只计算了i+1的值,没有把结果赋值回i,完全不会改变i的数值;而且就算你写成i = i+1,也会和循环末尾的i+=1叠加,导致索引跳变、漏遍历列表元素,属于冗余逻辑,直接删掉即可。
修正后可正常运行的代码
fruits = ["Apple", "Mango", "Guava", "Kiwi", "Melon"] i = 0 while i < len(fruits): if fruits[i] == 'Guava' or fruits[i] == 'Mango': print(fruits[i]) i += 1
运行输出结果:
Mango Guava
补充:这类遍历列表判断元素的场景,更推荐直接用for循环,不用手动维护索引i,写法更简洁也不容易出索引相关的错误:
fruits = ["Apple", "Mango", "Guava", "Kiwi", "Melon"] for fruit in fruits: if fruit in ('Guava', 'Mango'): print(fruit)
内容的提问来源于stack exchange,提问作者Rajbeer Singh
相关产品推荐
相关产品推荐

