Enumerate() у Python
Часто, маючи справу з ітераторами, нам також потрібно вести підрахунок ітерацій. Python полегшує завдання програмістів, надаючи для цього завдання вбудовану функцію enumerate(). Метод enumerate() додає лічильник до ітерованого і повертає його у формі об’єкта перерахування. Потім цей перерахований об’єкт можна використовувати безпосередньо для циклів або перетворити на список кортежів за допомогою функції list().
Синтаксис: enumerate(iterable, start=0)
Параметри:
- Повторювані: будь-який об'єкт, який підтримує ітерацію
- початок: значення індексу, з якого має початися лічильник, за замовчуванням воно дорівнює 0
Повернення: Повертає ітератор з парами індексів і елементів з оригінального ітератора
приклад
Тут ми використовуємо функцію enumerate() зі списком і рядком. Створення об’єктів перерахування для кожного та відображення їхніх типів повернення. Він також показує, як змінити початковий індекс для перерахування при застосуванні до рядка, що призводить до пар індекс-елемент для списку та рядка .
Python3
l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> s1> => 'geek'> # creating enumerate objects> obj1> => enumerate> (l1)> obj2> => enumerate> (s1)> print> (> 'Return type:'> ,> type> (obj1))> print> (> list> (> enumerate> (l1)))> # changing start index to 2 from 0> print> (> list> (> enumerate> (s1,> 2> )))> |
Вихід:
Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]
Використання Enumerate Object у циклах
Enumerate() використовується зі списком під назвою l1. Спочатку він друкує кортежі пар індексів і елементів. Потім він змінює початковий індекс, друкуючи їх разом. Нарешті, він друкує індекс та елемент окремо, кожен у своєму рядку.
Python3
l1> => [> 'eat'> ,> 'sleep'> ,> 'repeat'> ]> # printing the tuples in object directly> for> ele> in> enumerate> (l1):> > print> (ele)> # changing index and printing separately> for> count, ele> in> enumerate> (l1,> 100> ):> > print> (count, ele)> # getting desired output from tuple> for> count, ele> in> enumerate> (l1):> > print> (count)> > print> (ele)> |
Вихід:
(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat
Доступ до наступного елемента
У Python функція enumerate() служить ітератором, успадковуючи всі пов’язані функції та методи ітератора. Тому ми можемо використовувати функцію next() і метод __next__() з an перелічувати об'єкт.
Щоб отримати доступ до наступного елемента в об’єкті enumerate, ви можете скористатися функцією next(). Він приймає об’єкт enumerate як вхідні дані та повертає наступне значення в ітерації.
Python3
fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )> |
Вихід:
Next Element: (0, 'apple')
Ви можете знову викликати next(), щоб отримати наступні елементи:
Python3
fruits> => [> 'apple'> ,> 'banana'> ,> 'cherry'> ]> enum_fruits> => enumerate> (fruits)> next_element> => next> (enum_fruits)> print> (f> 'Next Element: {next_element}'> )> |
Вихід:
Next Element: (0, 'apple')
Кожного разу, коли викликається next(), внутрішній покажчик об’єкта enumerate переходить до наступного елемента, повертаючи відповідний кортеж індексу та значення.