Python 错误 TypeError: Iteration Over Non-Sequence
当函数或操作应用于不适当类型的对象时,Python 中会引发 TypeError。 例如,添加整数和字符串对象会返回 TypeError。
当您尝试迭代不可迭代的对象时,会出现错误 TypeError: iteration over non-sequence 。 本篇文章将介绍修复 TypeError: iteration over non-sequence 。
重现 Python 中 TypeError: iteration over non-sequence
现在您已经了解了 TypeError 的原因,让我们在 Python 中重新创建非序列错误的迭代。 在 Python 2 中运行以下脚本会出现 TypeError: iteration over non-sequence。
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self, name, author):
self.read.append(Book(name, author))
if __name__ == "__main__":
Books = Collection()
Books.add_book('Romeo and Juliet', 'William Shakespeare')
Books.add_book('To Kill a Mockingbird', 'Harper Lee')
for book in Books:
print(book.name)
在这里,我们试图遍历对象 Books 而不是其中读取的列表。 结果,它给出了 TypeError: iteration over non-sequence in Python 2。
输出:
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: iteration over non-sequence
在 Python 3 中,您将获得以下输出。
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: 'Collection' object is not iterable
遍历列表以修复 Python TypeError: iteration over non-sequence
由于 Books 是一个对象,因此您必须遍历对象 Books 内的列表。 在这种情况下,它将用于 Books.read 中的书。
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self,name,author):
self.read.append(Book(name,author))
if __name__ == "__main__":
Books = Collection()
Books.add_book('Romeo and Juliet','William Shakespeare')
Books.add_book('To Kill a Mockingbird','Harper Lee')
for book in Books.read:
print(book.name)
输出:
Romeo and Juliet
To Kill a Mockingbird
使用 __iter__
修复 Python TypeError: iteration over non-sequence Error
当容器需要迭代器时使用 __iter__
方法。 它应该返回可以迭代容器中所有对象的迭代器对象。
Books 是 Collection 的一个实例。 您可以使用 __iter__
方法迭代对象 Books。
class Collection:
def __iter__(self):
return iter(self.read)
以下块包含完整的脚本。
class Book:
def __init__(self, name, author):
self.name = name
self.author = author
class Collection:
def __init__(self):
self.read = []
def add_book(self,name,author):
self.read.append(Book(name,author))
def __iter__(self):
return iter(self.read)
if __name__ == "__main__":
Books = Collection()
Books.add_book('Romeo and Juliet','William Shakespeare')
Books.add_book('To Kill a Mockingbird','Harper Lee')
for book in Books:
print(book.name)
输出:
Romeo and Juliet
To Kill a Mockingbird
这就是解决 Python 中迭代非序列错误的方法。 我们希望这些解决方案对大家有所帮助。
相关文章
Python 中 Importerror: Install XLRD for Excel Support 错误
发布时间:2023/05/16 浏览次数:162 分类:Python
-
在本篇文章中,我们将探讨在 Python 中使用 Pandas 包时可能遇到以下错误的原因和解决方案。ImportError: Install xlrd >= 0.9.0 for Excel support 。让我们首先简要介绍一下 Pandas。
解决 Python 中 TypeError: An Integer Is Required 错误
发布时间:2023/05/16 浏览次数:100 分类:Python
-
在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误
发布时间:2023/05/16 浏览次数:189 分类:Python
-
有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。Python中 ConnectionRefusedError 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器
Python 中错误 TypeError: Must Be Real Number, Not STR
发布时间:2023/05/16 浏览次数:152 分类:Python
-
TypeError: must be real number, not str 错误涉及使用错误的类型和非实数,在本例中为 str 类型。使用 float() 或 int() 解决Python 中 TypeError: must be real number, not str
修复 windows 中 Python错误 Command cl.exe Failed: No Such File or Directory
发布时间:2023/05/16 浏览次数:124 分类:Python
-
pip 是 Python 的一个工具,允许您安装和管理包。 修复 Windows 中 command 'cl.exe' failed:No such file or directory 错误
Python 运行脚本错误 OSError: [Errno 8] Exec Format Error
发布时间:2023/05/15 浏览次数:187 分类:Python
-
Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时,有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。
Python 中 AttributeError: Int Object Has No Attribute 错误
发布时间:2023/05/15 浏览次数:175 分类:Python
-
修复 Python 错误 AttributeError: 'int' object has no attribute。本篇文章重点介绍并提供了一种解决方案,以应对我们在 Python 中使用 int 数据类型时可能发生的特定错误。
Python 修复共享内存问题和锁定共享资源问题
发布时间:2023/05/15 浏览次数:136 分类:Python
-
本篇文章解释了多处理共享内存的不同方面,并演示了如何使用共享内存解决问题。 我们还将学习如何使用锁来锁定 Python 中的共享资源。
Python 中 ImportError: No Module Named Setuptools 错误
发布时间:2023/05/15 浏览次数:141 分类:Python
-
本篇文章讨论了 ImportError saying no module named setuptools 并提供了在 Python 中消除此错误的解决方案。Python 设置工具库