Итерируемый объект в Python — это объект, содержащий последовательность элементов, которые можно перебирать с помощью простого цикла for. Списки, целые числа, строки и словари являются примерами таких объектов.

В этой статье о Python я покажу, как проверить, является ли объект итеративным в Python, с помощью различных методов и наглядных примеров.

Содержание

С помощью функции iter()

Python предоставляет встроенную функцию iter(), которую можно использовать для проверки того, является ли объект итеративным. Параметры, предоставляемые в методе iter в Python, — это объект и дозорный.

Вот полный код:

def is_iterable(object):
 try:
  iter(object)
  return True
 except TypeError:
  return False

print("List:",is_iterable([1, 2, 3]))
print("String:",is_iterable("hello"))
print("Integer:",is_iterable(42))
print("Dictionary:",is_iterable({'a': 1}))

Для обработки исключений мы использовали операторы Try и Ожидание в Python.

В этой части try программы мы можем добавить код, который может вызвать исключение, тогда как ожидаемая часть — это код с функцией iter() в части try, чтобы проверить, является ли объект итерируемым в Python.

 try:
  iter(object)
  return True
 except TypeError:
  return False

Выход:

List: True
String: True
Integer: False
Dictionary: True

Обратитесь к снимку экрана ниже, чтобы увидеть выходные данные программы Python, чтобы проверить, является ли объект итеративным, с помощью функции iter().

С помощью функции iter()

Используя цикл for

В этом примере мы попытаемся выполнить итерацию объекта с помощью цикла for и проверить, повторяется ли он в Python или нет.

Для этого я могу использовать приведенную ниже программу, чтобы проверить, является ли объект итеративным в Python, используя цикл for.

text = "John Smith"
try:
   for i in text:
      print(i)
   print("Given object is iterable")
except TypeError:
   print("Given object is not iterable")  

Выход:

J
o
h
n
 
S
m
i
t
h
Given object is iterable

Вы можете просмотреть выходные данные программы Python, чтобы проверить, является ли объект итеративным, с помощью цикла for.

Используя цикл for

Используя модуль Collections.abc с функцией isinstance()

В Python модуль Collections.abc предоставляет абстрактный базовый класс Iterable, который можно использовать для выполнения проверки итеративности. Класс Iterable из этого модуля может быть подклассом для создания новых итерируемых классов в Python.

Чтобы проверить, является ли объект итеративным, используя коллекцию.abc, мы можем использовать функцию isinstance() в Python.

В Python встроенная функция isinstance() используется для проверки принадлежности объекта какому-либо классу Iterable.

Полный исходный код:.

def is_iterable(object):
 return isinstance(object, Iterable)

print("List:",is_iterable([1, 2, 3]))
print("String:",is_iterable("hello")) 
print("Integer:",is_iterable(42))
print("Dictionary:",is_iterable({'a': 1}))

Здесь я проверю, является ли объект, переданный функции, примером итерируемого объекта. Затем он возвращает True, если объект является итеративным в Python. В противном случае Ложь.

return isinstance(object, Iterable)

Выход:

List: True
String: True
Integer: False
Dictionary: True

На снимке экрана ниже показаны выходные данные программы, проверяющей, является ли объект итеративным в Python, с использованием модуля Collections.abc с функцией isinstance().

Используя модуль Collections.abc с функцией isinstance()

С помощью утиного набора текста

В Python утиная типизация означает, что тип или класс объекта определяется его поведением, а не его конкретными типами. Это означает, что если объект ведет себя как итерируемый объект, его можно считать таковым.

Полная программа для проверки возможности итерации объекта в Python с использованием утиной типизации.

def is_iterable(obj):
  return hasattr(obj, "__iter__")

print("List:",is_iterable([5, 2, 3]))
print("String:",is_iterable("Latham")) 
print("Integer:",is_iterable(42))
print("Dictionary:",is_iterable({'a': 1}))

Я использовал функцию hasattr(), чтобы проверить, имеет ли объект атрибут __iter__ в Python.

Он возвращает True, если объект имеет указанный атрибут, в данном случае iter, который указывает, что он является итеративным. В противном случае он возвращает False.

return hasattr(obj, "__iter__")

Выход:

List: True
String: True
Integer: False
Dictionary: True

Обратитесь к снимку экрана ниже, чтобы увидеть выходные данные программы, чтобы проверить, является ли объект итерируемым в Python с использованием утиной печати.

Используя утиную типизацию

Заключение

Знание того, как проверить, является ли объект итеративным, может быть полезно, чтобы избежать TypeError, когда у вас есть цикл for или понимание списка с объектом в Python.

Добавить комментарий