Итерируемый объект в Python — это объект, содержащий последовательность элементов, которые можно перебирать с помощью простого цикла for. Списки, целые числа, строки и словари являются примерами таких объектов.
В этой статье о Python я покажу, как проверить, является ли объект итеративным в Python, с помощью различных методов и наглядных примеров.
- С помощью функции iter()
- Используя цикл for
- Используя модуль Collections.abc с функцией isinstance()
- С помощью утиного набора текста
- Заключение
С помощью функции 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().
Используя цикл 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.
Используя модуль 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().
С помощью утиного набора текста
В 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.