Python报错排查:查找列表末尾为4的数字时出现TypeError
问题解决:找出列表中末尾为4的数字
错误原因分析
第一个错误
TypeError: list indices must be integers or slices, not str:
你在循环中for ele in x_str,ele是x_str中的字符串元素(比如"12"、"44"),但你却用x_str[ele]来索引列表——列表的索引必须是整数,字符串无法作为索引,因此报错。第二个错误
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
相关产品推荐
相关产品推荐

