Enumerate — это функция, которая зацикливается на объекте (который является итерируемым) и отслеживает, сколько раз он зацикливался.

Хорошо, давайте упростим:
Что означает итерация? В математике итерация — это повторение процесса для получения последовательности результатов.
Что такое итерируемый объект?Итерируемый объект в Python — это объект, способный возвращать свои данные один за другим.

В python есть два типа циклов; while, который зацикливается, пока выполняется определенное условие, а for похож на while, но выполняется определенное количество раз.

Вы можете спросить: «Дэвиша, разве for i in range(x) не делает то же самое?». Не совсем; так как если вы используете for i in range(x) и хотите получить доступ к элементу i, вам придется сделать element[i] . Но с for index, data in enumerate(x) вы можете получить данные и индекс одновременно.

Как вы используете перечисление?

Когда вы объявляете переменную с перечислением (например: a = enumerate("aaa") ) и вызываете ее, она возвращает что-то вроде <enumerate object at 0x11009994>, что является адресом памяти функции. Поэтому, чтобы получить предметы, вам придется использовать цикл. например for index, data in enumerate(x) . Вы также можете использовать next(x) для получения следующего значения перечисляемого списка.

Пример со списком

В приведенном выше примере я создал объект-список под названием «сторожи», который содержит имена всех сторожей.
for index, name in enumerate(watchmen): В этой строке я объявил две переменные; index и name, потому что перечисление разбивает объект на два. первый — это индекс (0 и далее), а второй — данные. Если вы запустите код, вывод должен быть;

0: John
1: Walter
2: Daniel
3: Eddie
4: Sally

Пример с циклом while

Настройка перечисления цикла while создать немного сложнее, чем цикл for. Как видите, я объявил enum, который является перечисляемым объектом. Во время цикла while я установил две переменные; индекс и имя, которые берутся из функции next(enum) . next() дает вам следующую итерацию перечисляемого объекта (также работает с генераторами).
Вы бы заметили try и except ; Я разместил их, потому что While True продолжается вечно, а enum не имеет достаточно терминов, чтобы продолжаться вечно. Когда перечисляемый объект или генератор не имеет больше данных для предоставления (при вызове next() ), он вызывает исключение StopIteration. Таким образом, функция exclude состоит в том, чтобы остановить цикл, как только он обнаружит исключение.

Следует ли заменить for i in range(len(x)): на enumerate()

Есть несколько веских причин. Наиболее важные из них:

  • Уборка кода (поскольку он намного короче, чем for i in range(len(x)): )
  • Скорость (с небольшим отрывом)

Заключение

Это моя статья о перечислении, надеюсь, вам понравилось!