Python — повторяемый учебник с примером

Python не имеет встроенного метода isiterable () для проверки, является ли объект итерируемым или нет. Но есть несколько способов определить, является ли объект повторяемым или нет. Некоторые из подходов являются дорогостоящими операциями, а некоторые из них неосуществимы в некоторых случаях использования.

Python является итеративным

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

Метод iter () — это наиболее точный способ проверить, является ли объект итерируемым, и обработать исключение TypeError, если оно нет.

Синтаксис функции iter () следующий.

 iter (объект, дозорный) 

Пример

 data = ["Upendra", "Arjun  "," Nikunj "] try: object_iterator = iter (data), кроме TypeError as te: print (data," не повторяется ") else: print (data," является повторяемым ") 

Вывод

 ['Upendra', 'Arjun', 'Nikunj'] итерируемый 

Давайте присвоим целое число переменной данных и проверьте наличие итерации.

 data = 21try: object_iterator = iter (data), кроме TypeError as te: print (data, "не итерируемый") else: print (data, "is iterable"  ) 

Вывод

 21 не повторяется 

Подход с использованием коллекций Python

Чтобы проверить, является ли объект итерируемым в Python, используйте абстрактный класс Iterable модуля коллекций. Модуль коллекций предоставляет некоторые абстрактные базовые классы, которые позволяют запрашивать классы или экземпляры, предоставляют ли они определенные функции.

Python isinstance () — это встроенный метод, который возвращает True , если указанный объект относится к указанному типу. В противном случае возвращается False . Мы будем использовать абстрактный класс Iterable и метод isinstance (), чтобы проверить, является ли объект итерируемым или нет в Python.

Для работы с классом Iterable нам нужно сначала импортировать его.

 from collections.abc import Iterable 

Теперь давайте определим целое число, которое не может быть повторено, но давайте проверим его, используя класс Iterable и метод isinstance () с оператором if-else в Python.

 from collections.abc import Iterabledata = 12if isinstance (data, Iterable): print («Итерируемые данные») else: print («Итерируемые данные не выполняются») 

Запустите программу и посмотрите результат.

 Итерация данных невозможна 

Как видите, мы получили правильный ответ: целое число в Python не является итеративным типом данных.

Теперь давайте назначим список переменной данных, которая является итерируемым, и посмотрите, какой результат он возвращает.

 из коллекций. abc import Iterabledata = ["Rick", "and", "Morty"] if isinstance (data, Iterable): print ("Данные можно повторять") else: print ("Данные не повторяются") 

 Данные можно повторять 

Да, список можно повторять, что означает наш способ определения если объект итерируемый, верен.

Почему подход коллекций не является полным решением

Проверка итерации с помощью isinstance (obj , Iterable) обнаруживает классы, зарегистрированные как Iterable или имеющие метод __iter __ (), но не обнаруживает классы, которые повторяются с помощью метода __getitem __ ().

Единственный точный подход — это определение является ли объект итерируемым — это вызвать iter (obj).

Утиная печать: Python повторяется

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

 data = ["Rick", "and", "Morty"] try: iterator = iter (data) except TypeError: #  не повторяется print ("Данные не повторяются") else: # iterable print ("Данные можно повторять") 

Вывод

 Данные являются итеративными 

Теперь, если вы присвоите переменной данных целое число, оно будет выполняться за исключением блока с TypeError .

 data = 21try: iterator = iter (data) except TypeError: # не повторяется print ("Данные не повторяются") else: # iterable print ("Данные повторяются") 

Вывод

 Итерация данных невозможна 

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

Python __iter__

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

Это для определения итерируемого объекта в учебнике Python.

Оцените статью
nanomode.ru
Добавить комментарий