TypeError: iteración sobre no secuencia
-
Vuelva a crear
TypeError: iteración sobre no secuencia
en Python -
Iterar sobre una lista para corregir
TypeError: iteración sobre la no secuencia
en Python -
Use
__iter__
para corregir el errorTypeError: iteration over non-sequence
en Python
El TypeError
se genera en Python cuando la función u operación se aplica a un objeto de un tipo inadecuado. Por ejemplo, agregar objetos enteros y cadenas devuelve TypeError
.
El error TypeError: iteration over non-sequence
ocurre cuando intenta iterar sobre un objeto que no es iterable. Este tutorial le enseñará a corregir TypeError: iteración sobre no secuencia
en Python.
Vuelva a crear TypeError: iteración sobre no secuencia
en Python
Ahora que ha entendido la causa de TypeError
, volvamos a crear el error de iteración sobre la no secuencia
en Python. Ejecutar el siguiente script en Python 2 da TypeError: iteración sobre no secuencia
.
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)
Aquí, estamos tratando de iterar sobre el objeto Libros
en lugar de la lista leer
dentro de él. Como resultado, da TypeError: iteración sobre no secuencia
en Python 2.
Producción :
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: iteration over non-sequence
En Python 3, obtendrá el siguiente resultado.
Traceback (most recent call last):
File "Main.py", line 17, in <module>
for book in Books:
TypeError: 'Collection' object is not iterable
Iterar sobre una lista para corregir TypeError: iteración sobre la no secuencia
en Python
Dado que Libros
es un objeto, debe iterar sobre la lista dentro del objeto Libros
. En este caso, será para libro en 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)
Producción :
Romeo and Juliet
To Kill a Mockingbird
Use __iter__
para corregir el error TypeError: iteration over non-sequence
en Python
El método __iter__
se usa cuando un contenedor requiere un iterador. Debería devolver el objeto iterador que puede iterar sobre todos los objetos en el contenedor.
Libros
es una instancia de Colección
. Puedes usar el método __iter__
para iterar sobre el objeto Books
.
class Collection:
def __iter__(self):
return iter(self.read)
El siguiente bloque contiene el script completo.
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)
Producción :
Romeo and Juliet
To Kill a Mockingbird
Así es como puedes resolver el error de iteración sobre no secuencia
en Python. Esperamos que estas soluciones le resulten útiles.
Artículo relacionado - Python TypeError
- Python TypeError: falta 1 argumento posicional requerido
- Python TypeError: Unhashable Tipo: Lista
- Resuelva el TypeError: no todos los argumentos se convirtieron durante el formato de cadena en Python
- Resuelva el TypeError: se requiere un número entero en Python
- Solucione el error de tipo de Python: los índices de lista deben ser números enteros, no una lista
- TypeError: debe ser un número real, no STR
Artículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python