¿Cómo verificar si un objeto es iterable en Python?

En palabras simples, cualquier objeto sobre el que se pueda hacer un bucle es iterable. Por ejemplo, un objeto de lista es iterable y también lo es un objeto str. Los números de la lista y los nombres de las strings son iterables porque podemos recorrerlos en bucle (usando un bucle for en este caso). En este artículo, vamos a ver cómo verificar si un objeto es iterable en Python.

Ejemplos: 

Entrada: «Hola»

Salida: el objeto no es iterable

Explicación: el objeto podría ser como (h, e, l, l, o)

Entrada: 5

Salida: el objeto int’ no es iterable

Ejemplo 1:

Python3

# code
name = "Hello"
  
for letter in name:
  print(letter, end = " ")

Producción:

H e l l o

Ejemplo 2:

Python3

# code
number = 5 
for i in number:
  print(i)

Producción

TypeError: 'int' object is not iterable

Sin embargo, un objeto int no es iterable y también lo es un objeto flotante. El número de objeto entero no es iterable , ya que no podemos recorrerlo.

Vamos a explorar las diferentes formas de verificar si un objeto es iterable o no. Usamos la función hasattr() para probar si el nombre del objeto de string tiene el atributo __iter__ para verificar la iterabilidad. Sin embargo, esta comprobación no es exhaustiva.

Método 1: usar la verificación del método __iter__.

Python3

# code
name = 'Roster'
  
if hasattr(name, '__iter__'):
  print(f'{name} is iterable')
    
else:
  print(f'{name} is not iterable')

Producción:

Roster is iterable

Método 2: Usar la clase Iterable del módulo collections.abc.

Podríamos verificar que un objeto es iterable comprobando si es una instancia de la clase Iterable. La verificación de instancia informa que el objeto de string es iterable correctamente utilizando la clase Iterable. Esto también funciona para Python 3. Para Python 3.3 y superior, tendrá que importar la clase Iterable desde collections.abc y no desde colecciones como esta:

Python3

# code
from collections.abc import Iterable
  
  
name = 'Roster'
  
if isinstance(name, Iterable):
  print(f"{name} is iterable")
    
else:
  print(f"{name} is not iterable")

Producción:

Roster is iterable

Método 3: Usar la función integrada iter().

La función incorporada iter funciona de la siguiente manera:

  • Comprueba si el objeto implementa __iter__ y lo llama para obtener un iterador.
  • Si eso falla, Python genera TypeError , generalmente diciendo «El objeto C no es iterable «, donde C es la clase del objeto de destino.

Código:

Python3

# code
name = "Roster"
  
try:
  iter(name)
  print("{} is iterable".format(name)) 
    
except TypeError:
  print("{} is not iterable".format(name))

Producción:

Roster is iterable

Publicación traducida automáticamente

Artículo escrito por snowflake203 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *