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

Python报错排查:查找列表末尾为4的数字时出现TypeError

问题解决:找出列表中末尾为4的数字

错误原因分析

  1. 第一个错误TypeError: list indices must be integers or slices, not str:
    你在循环中for ele in x_str,ele是x_str中的字符串元素(比如"12"、"44"),但你却用x_str[ele]来索引列表——列表的索引必须是整数,字符串无法作为索引,因此报错。

  2. 第二个错误TypeError: 'int' object is not iterable:
    你只转换了x_str[ele][-1]的类型,但x_str[ele]依然是用字符串ele作为索引,本质错误没修正;就算把ele转成整数,也完全没必要,因为你已经直接拿到了ele这个元素。

正确解法

方法1:用数学运算(更高效,无需转字符串)

利用取模运算%10直接获取数字的最后一位,判断是否等于4:

x = [12, 44, 4, 1, 6, 343, 10, 34, 12, 94, 783, 330, 896, 1, 55]
for num in x:
    if num % 10 == 4:
        print(num)

方法2:用字符串判断(修正你的原思路)

既然已经把数字转成了字符串,直接操作循环中的ele元素即可,不需要再用列表索引:

x = [12, 44, 4, 1, 6, 343, 10, 34, 12, 94, 783, 330, 896, 1, 55]
x_str = list(map(str, x))

for ele in x_str:
    if ele[-1] == "4":
        print(ele)  # 若需要输出数字,可改为print(int(ele))

关键提示

遍历列表时,for 元素 in 列表拿到的是列表里的每个元素,不是元素的索引;如果需要索引,应该用for idx, ele in enumerate(列表)这种写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:22:07