Python报错”TypeError: ‘float’ object is not iterable “怎么处理?

  • Post category:Python

问题描述:
当我们在Python程序中使用迭代器遍历一个float类型的变量时,有可能会报TypeError: 'float' object is not iterable这样的错误。

问题原因:
这个错误的原因是float类型是Python中的基本数据类型之一,它是不可迭代的,也就是说不能像可迭代数据类型(如list,tuple等)一样进行遍历。而在使用for循环时,系统默认会将目标对象转化为迭代器,如果对象不能被转化为迭代器,就会抛出上述的‘float’ object is not iterable异常。

问题解决办法:
1. 将float类型对象封装到列表或元组中,使其变成可迭代对象,再进行遍历。

例如:

f = 3.1415
lst = [f]   # 将f封装到列表lst中
for i in lst:
    print(i)

运行结果:

3.1415
  1. 判断对象是否可迭代后再进行遍历。

判断对象可迭代的方法是使用iter()函数,如果可以迭代就返回其迭代器对象,否则就抛出TypeError: 'type' object is not iterable异常。如果判断为不可迭代,则需使用上述第一种方法进行封装。

例如:

f = 3.1415
if hasattr(f, '__iter__'):  # 判断f是否为可迭代对象
    for i in f:
        print(i)
else:
    lst = [f]  # f不可迭代,将其封装到列表lst中
    for i in lst:
        print(i)

运行结果:

3.1415

综上所述:

在Python中遍历float类型变量时,需要将其封装成可迭代对象,或者在遍历前先判断其是否可迭代。这样能够有效避免因为float类型非迭代造成的TypeError: 'float' object is not iterable异常。