网站首页 > 技术文章 正文
原文: Int Object is Not Iterable – Python Error [Solved]
如果你在运行你的 Python 代码时看到报错 “TypeError: 'int' object is not iterable”,这意味着你正试图遍历一个整数或其他不能应用循环的数据类型。
在 Python 中,可迭代的数据是列表、元组、集合、字典等等。
此外,这个错误是 “TypeError”,意味着你正试图对一个不合适的数据类型进行操作,例如,将一个字符串与一个整数相加。
今天之后,你在运行 Python 代码时就不会遇到这个错误了。因为在这篇文章中,我不仅会告诉你如何解决它,我还会告诉你如何查看 __iter__ 魔法方法,以便你能看到一个对象是否可迭代。
如何解决 Int 对象不可迭代的问题
如果你试图遍历一个整数,你会得到这个报错:
count = 14
for i in count:
print(i)
# Output: TypeError: 'int' object is not iterable
解决这个问题的一个方法是将变量传入 range() 函数。
在 Python 中,range 函数检查传入的变量,并返回一系列从 0 开始、在指定数字之前停止的数字。
现在循环将运行:
count = 14
for i in range(count):
print(i)
# Output: 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
# 13
另一个使用该解决方案的例子是下面的片段:
age = int(input("Enter your age: "))
for num in range(age):
print(num)
# Output:
# Enter your age: 6
# 0
# 1
# 2
# 3
# 4
# 5
如何检查数据或对象是否是可迭代的?
要检查某些特定的数据是否是可迭代的,你可以使用 dir() 方法。如果你能看到神奇的 __iter__ 方法,那么这些数据就是可迭代的。如果没有,那么这些数据就不是可迭代的,你不应该费力地去遍历它们。
perfectNum = 7
print(dir(perfectNum))
# Output:['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__',
# '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
在输出中没有找到 __iter__ 魔法方法,所以变量 perfectNum 是不可迭代的。
jerseyNums = [43, 10, 7, 6, 8]
print(dir(jerseyNums))
# Output: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
找到了魔法方法 __iter__,所以列表 jerseyNums 是可迭代的。
小结
在这篇文章中,你了解了 “Int Object is Not Iterable” 错误以及如何解决它。
你也了解了如何检查一个对象或一些数据是否可迭代。
如果你在一些数据中查找 __iter__ 魔法方法而没有找到它,最好不要试图在这些数据中循环,因为它们不是可迭代的。
谢谢你阅读本文。
猜你喜欢
- 2024-12-02 「第2周」Python基本图形绘制 实例3——turtle五角星绘制
- 2024-12-02 青少年 Python 编程 Lesson9: 面向对象设计
- 2024-12-02 「Python条件结构」将两个数从小到大输出
- 2024-12-02 Python包中__init__.py文件的作用和用法
- 2024-12-02 分享一个Python实例脚本--如何判断输入日期是第几天
- 2024-12-02 python编程 石头剪刀布游戏,练手题目
- 2024-12-02 Python每日一练之打印所有水仙花数
- 2024-12-02 [oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
- 2024-12-02 零基础学python第七天之随机整数randint
- 2024-12-02 Python数据类型的转换
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)