Как использовать функцию enumerate() в Python

Функция enumerate() в Python принимает набор данных в качестве параметра и возвращает перечисляемый объект.

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

lessons =["Math","Physics","Chemistry"]
index_wih_lessons = enumerate(lessons)
print(list(index_wih_lessons))

Выход:

[(0, 'Math'), (1, 'Physics'), (2, 'Chemistry')]

Как вы можете видеть в результате, они находятся в парах ключ-значение. Первый индекс — 0 — соответствует первому элементу в списке уроков, второй — 1 и присваивается второму элементу в списке уроков и так далее.

enumerate(iterable, start=0) принимает два параметра:

  • iterable: список, строка, кортеж и т. д.
  • start = 0. В Python индекс начинается с 0. Если мы хотим начать индекс с другого числа, мы можем использовать start = номер, который мы хотим.

Enumerate часто используется в генераторах списков или в циклах for.

Давайте сделаем пример!

students = ["Ali", "Veli", "Ahmet", "Ayşe"]
for index,student in enumerate(students):
    print(index,student)

Выход:

0 Ali
1 Veli
2 Ahmet
3 Ayşe

Как мы видим в нашем выводе, каждое из наших значений теперь имеет индекс.

Давайте сделаем еще один пример, и в этом примере наши значения индекса начинаются с 14:

students = ["Ali", "Veli", "Ahmet", "Ayşe"]
for index,student in enumerate(students,14):
    print(index,student)

Выход:

14 Ali
15 Veli
16 Ahmet
17 Ayşe

Когда мы используем метод перечисления?

Мы используем метод enumerate(), когда хотим перемещаться по итеративному объекту и применять операцию к его элементам, сохраняя при этом информацию индекса этих элементов и при необходимости обрабатывая эту информацию индекса.

Давайте сделаем пример, чтобы укрепить его лучше!

Пример сценария: Мы хотим сыграть в табу, и у нас есть список из 10 слов. Мы разделим слова в этом списке на два отдельных списка в зависимости от того, является ли их индекс четным или нечетным, так что наши слова в двух группах будут готовы.

words_for_taboo = ["SYLLABLE", "PEN", "CHANDELIER", "COORDINATE", "TERM", "ABSTRACT", "GIFT", "HALUCINATION", "ANTICO","SCALE"]
group_1_words = []
group_2_words = []
for index, word in enumerate(words_for_taboo, start=1):
    if index % 2 == 0:
        group_1_words.append(word)

    else:
        group_2_words.append(word)
print("Group 1: ", group_1_words, "Group 2: ", group_2_words)

Выход:

Group 1:  ['PEN', 'COORDINATE', 'ABSTRACT', 'HALUCINATION', 'SCALE'] Group 2:  ['SYLLABLE', 'CHANDELIER', 'TERM', 'GIFT', 'ANTICO']

Надеюсь, некоторая путаница с enumerate улеглась!