Перечисление Python: объяснение с примерами

Перечисление Python: объяснение с примерами

Работа со списками и другими итерируемыми объектами — обычная задача в программировании на Python . Иногда вам может понадобиться пройтись по этим итерациям, одновременно отслеживая индекс или количество текущего элемента. Вот тут и приходит на помощь встроенная в Python функция enumerate().

Функция enumerate() в Python предоставляет вам удобный способ доступа как к индексу элемента, так и к самому элементу, когда вы перебираете список или любой итерируемый объект.

Перечисление Python: объяснение с примерами

Эта функция делает ваш код более Pythonic , читабельным и эффективным. Это позволяет вам перебирать элементы и получать как их индекс, так и значение. Вместо ручной инициализации и увеличения счетчика в цикле вы можете положиться на enumerate(), который сделает всю работу за вас.

В этой статье вы узнаете о встроенной в Python функции enumerate(), ее важности в вашем коде Python и вариантах ее использования.

Давайте погрузимся в это!

Оглавление

Что такое функция перечисления Python?

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

Без enumerate() Python вы можете решить использовать переменную-счетчик, которую вы увеличиваете в каждой итерации цикла. Но этот подход может быть подвержен ошибкам, и он не очень «питоновский».

Enumerate — это встроенная в Python функция, которая позволяет выполнять итерацию по итерируемым объектам, отслеживая при этом индекс текущего элемента.

Теперь, когда вы поняли, что такое функция enumerate() в Python, давайте перейдем к синтаксису функции enumerate() в Python в следующем разделе!

Каков синтаксис функции перечисления Python?

Синтаксис функции определяет, как вы должны использовать эту функцию в своем коде, в том числе какие аргументы она принимает и что возвращает.

Перечисление Python: объяснение с примерами

Функция enumerate () имеет следующий синтаксис:

enumerate(, start=0)
  • : это обязательный параметр, который может быть любым итерируемым объектом Python, например списком или кортежем.

  • start : этот второй параметр является необязательным параметром, который указывает начальное значение счетчика. По умолчанию установлено значение 0.

Возвращаемое значение функции enumerate() — это перечисляемый объект, который представляет собой итератор, имеющий пары (индекс, элемент) для каждого элемента в данном итерируемом объекте.

Вы можете использовать этот итератор в цикле for для одновременного доступа к индексу и элементу.

В следующем примере показано, как вы можете использовать функцию enumerate() со списком:

fruits = ['apple', 'banana', 'cherry']

for index, item in enumerate(fruits):
    print(index, item)

В этом примере enumerate() перебирает перечисляемые объекты, т. е. список фруктов , и присваивает индекс каждому элементу, начиная с 0.

Затем цикл for распаковывает индекс и элемент перечисляемого объекта. Это позволяет выполнять операции на основе как индекса, так и значения элемента.

Мы используем функцию печати для вывода индекса и элемента на экран. Вывод кода показан на изображении ниже:

Перечисление Python: объяснение с примерами

В выводе видно, что начальный индекс равен 0. Это значение индекса по умолчанию, автоматически назначаемое интерпретатором Python.

Однако вы также можете указать другое начальное значение для счетчика, указав необязательный параметр start , как показано в коде ниже:

for index, item in enumerate(fruits, start=1):
    print(index, item)

Вывод будет аналогичен приведенному выше. Единственная разница будет заключаться в том, что индекс теперь начинается с 1.

Перечисление Python: объяснение с примерами

Итак, теперь вы разобрались с синтаксисом функции enumerate() в Python. Но, как и в случае с любым инструментом, важно знать, когда и где его использовать.

Вот почему мы собираемся изучить некоторые распространенные варианты использования функции enumerate() в следующем разделе!

5 вариантов использования функции перечисления в Python

Функция перечисления в Python широко используется в сценариях, где для программиста важны как индекс, так и значение итерируемого объекта.

Ниже мы перечислили некоторые распространенные варианты использования функций перечисления в Python.

1. Как использовать перечисление со списками Python

В Python список — это встроенная структура данных, позволяющая хранить несколько элементов в одной переменной. Думайте о списке как о контейнере, куда вы можете поместить разные элементы, и они сохранят свой порядок.

Функцию enumerate() можно использовать в списках различными способами, например:

A. Доступ к элементам списка и их индексам с помощью Python Enumerate

Один из наиболее распространенных случаев использования enumerate() — это когда вам нужно получить доступ как к элементам списка, так и к их индексам. Enumerate позволяет сделать это чистым и эффективным способом.

Ниже приведен пример доступа к элементам списка и их индексам:

fruits = ['apple', 'banana', 'mango', 'grape', 'orange']
for index, fruit in enumerate(fruits):
    print(f"At index {index}, the fruit is {fruit}.")

Вывод этого кода показан на изображении ниже:

Перечисление Python: объяснение с примерами

B. Изменение элементов списка с помощью Python Enumerate

Когда вам нужно изменить элементы списка на основе их индекса, enumerate() — отличный инструмент. Вы можете получить доступ к индексу внутри цикла и использовать его для изменения списка.

Ниже приведен пример изменения элементов списка с помощью функции enumerate:

numbers = [1, 2, 3, 4, 5]

for i, num in enumerate(numbers):
    numbers[i] = num * 2

Этот код Python создает список чисел от 1 до 5. Затем он использует цикл for и функцию enumerate() для перебора списка.

Для каждой итерации он умножает текущее число (num) на 2 и переназначает его на ту же позицию в списке (numbers[i]).

В результате каждое число в исходном списке удваивается, как показано на изображении ниже:

Перечисление Python: объяснение с примерами

C. Сравнение элементов в двух списках с помощью Python Enumerate

Если вы сравниваете элементы в двух разных списках, enumerate() может предоставить индекс, необходимый для одновременного доступа к элементам в обоих списках.

Ниже приведен пример использования функции enumerate для сравнения элементов в двух списках:

list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 0, 5]
for i, value in enumerate(list1):
    if value != list2[i]:
        print(f"Difference at index {i}: {value} (list1) vs {list2[i]} (list2)")

В этом коде мы сначала определяем два списка, list1 и list2. Затем мы перебираем list1, используя цикл for с enumerate(), который предоставляет индекс (i) и значение каждого элемента.

Если текущий элемент в списке1 не соответствует соответствующему элементу в списке2, он печатает индекс различия и отличающиеся значения из обоих списков.

Результат этого кода показан ниже:

Перечисление Python: объяснение с примерами

2. Как использовать перечисление с кортежами Python

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

Ниже приведены некоторые случаи, когда вы можете использовать enumerate с кортежами Python.

А. Использование Python Enumerate() для поиска элемента в кортеже

При работе с кортежами в Python вам часто может понадобиться выяснить, существует ли элемент в кортеже.

В следующем примере кода показано использование enumerate для поиска элементов в кортеже:

fruits = ('apple', 'banana', 'mango', 'grape', 'orange')
for i, fruit in enumerate(fruits):
    if fruit == 'mango':
        print(f"'mango' found at position {i}")

Этот код напечатает «манго найдено в позиции 2», потому что «манго» находится в индексе 2 в кортеже.

Перечисление Python: объяснение с примерами

B. Использование Python Enumerate() для создания словаря из кортежа

Если у вас есть кортеж и вам нужно преобразовать его в словарь, функция Python enumerate() может стать вашим незаменимым инструментом.

Пример кода показывает, как вы можете создать словарь из кортежа, используя enumerate:

fruits = ('apple', 'banana', 'mango', 'grape', 'orange')

fruit_dict = {i: fruit for i, fruit in enumerate(fruits)}
print(fruit_dict)

Этот код напечатает словарь, где ключи — это индексы, а значения — это элементы кортежа.

Перечисление Python: объяснение с примерами

3. Как использовать Enumerate со словарями Python

В Python словарь — это изменяемый неупорядоченный набор пар ключ-значение , где каждый ключ должен быть уникальным. Думайте об этом как о реальном словаре: вы ищете слово (ключ) и получаете его определение (значение).

Ниже приведены некоторые случаи, когда вы можете использовать enumerate со словарями Python:

A. Перебор ключей и значений словаря

Вы можете использовать функцию enumerate() для циклического перебора ключей и значений словаря.

Функция enumerate() добавляет счетчик к итерируемому объекту (например, к словарям), позволяя вам получить доступ к текущему значению индекса.

Ниже приведен пример функции перечисления со словарем Python :

example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, k in enumerate(example_dict):
    print(i, k)

В этом коде Python мы сначала создаем словарь с именем example_dict. Затем мы используем функцию enumerate() для перебора словаря.

Для каждой итерации мы печатаем количество циклов (которое задается i и начинается с 0) и текущий ключ (который равен k) из словаря.

Перечисление Python: объяснение с примерами

B. Объединение перечисления Python с функцией Items

Вы также можете получить доступ как к ключам, так и к значениям словаря через функцию items() вместе с enumerate() . Функция items () возвращает итерируемую коллекцию пар ключ-значение в виде кортежей.

Пример ниже демонстрирует, как вы можете использовать функцию items() с enumerate() :

example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, (k, v) in enumerate(example_dict.items()):
    print(i, k, v)

В этом коде мы создаем словарь с именем example_dict , затем используем функцию enumerate() для перебора пар ключ-значение словаря. Во время каждой итерации мы печатаем индекс цикла «i», текущий ключ «k» и соответствующее ему значение «v».

Перечисление Python: объяснение с примерами

Теперь у вас есть четкое представление о том, как использовать функцию Python enumerate() в некоторых распространенных сценариях. Но enumerate() может предложить еще больше.

Давайте углубимся в некоторые расширенные варианты использования enumerate() в следующем разделе!

3 продвинутых варианта использования Python Enumerate

В этом разделе мы выйдем за рамки основ и рассмотрим некоторые расширенные варианты использования функции перечисления в Python.

Мы рассмотрим следующие варианты использования:

  1. Использование перечисления с классами Python

  2. Использование перечисления с классами перечисления

  3. Использование Enumerate для изменения порядка

Давайте погрузимся в это!

1. Использование перечисления с классами Python

В своем путешествии по программированию на Python вы можете столкнуться с ситуациями, когда вы хотите использовать enumerate с пользовательскими классами.

Для этого в вашем классе должен быть реализован метод iter() , позволяющий выполнять итерацию.

Рассмотрим класс Color , в котором хранятся имена цветов и связанные с ними шестнадцатеричные значения:

class Color:
    def __init__(self, colors: dict):
        self.colors = colors

    def __iter__(self):
        return iter(self.colors.items())

colors = Color({"red": "#FF0000", "green": "#00FF00", "blue": "#0000FF"})

for index, (name, hex_value) in enumerate(colors):
    print(f"{index}: {name} => {hex_value}")

В этом коде мы создаем класс Color, который принимает словарь имен цветов и соответствующих им шестнадцатеричных значений.

Когда вы используете enumerate() в цикле, он предоставляет индекс ��месте с каждой парой ключ-значение. Это позволяет вам печатать индекс, название цвета и его шестнадцатеричное значение в форматированной строке.

Перечисление Python: объяснение с примерами

2. Использование Python Enumerate с классами Enum

Python поставляется со встроенным классом Enum , который позволяет создавать типы перечислений с автоматически назначаемыми целочисленными значениями.

Например, взгляните на следующий код:

from enum import Enum, auto

class Direction(Enum):
    NORTH = auto()
    EAST = auto()
    SOUTH = auto()
    WEST = auto()

for index, direction in enumerate(Direction):
    print(f"{index}: {direction.name} => {direction.value}")

В этом скрипте мы определяем перечисление Direction с четырьмя членами (СЕВЕР, ВОСТОК, ЮГ и ЗАПАД) с помощью модуля Python enum. Функция auto() автоматически присваивает значение каждому элементу.

Когда вы используете enumerate() в цикле, он предоставляет индекс вместе с каждым элементом перечисления. Это позволяет распечатать индекс, имя члена и его автоматически присвоенное значение в форматированной строке.

Вывод этого кода показан на изображении ниже:

Перечисление Python: объяснение с примерами

3. Использование Python Enumerate для реверсирования порядка

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

Следующий пример демонстрирует перечисление элементов в обратном порядке:

my_list = ["apple", "banana", "cherry"]

for index, item in enumerate(reversed(my_list)):
    print(f"{index}: {item}")

В этом коде мы перебираем обратную версию my_list, используя enumerate(). Это предоставляет вам индекс и элемент из перевернутого списка на каждой итерации. Это позволяет вам печатать индекс и элемент в форматированной строке.

Перечисление Python: объяснение с примерами

Функция reversed () не изменит исходную последовательность; он создает новый итератор, который представляет элементы в обратном порядке.

Чтобы узнать больше о функциях в Python, посмотрите следующее видео:

Последние мысли

По мере того, как вы продолжаете свое путешествие по Python, вам необходимо освоить функцию enumerate(). Это инструмент, который повышает читабельность и эффективность кода.

Используя enumerate(), вы можете беспрепятственно обращаться как к индексу, так и к значению в ваших циклах, уменьшая потребность в переменных-счетчиках или индексировании. Это упрощает ваш код и делает его более Pythonic.

Перебираете ли вы списки, кортежи, строки или словари, enumerate() окажется ценным инструментом. Поняв и попрактиковавшись в enumerate(), вы сделаете значительный шаг в оттачивании своих навыков программирования на Python!


Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

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

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать