Как использовать функцию 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 улеглась!