Python3 Функция enumerate()
enumerate()является встроенной функцией в Python, используемой для получения как индекса, так и значения при переборе итерируемого объекта.
Использованиеenumerate()Она позволяет удобно одновременно получать как индекс (позицию), так и сам элемент, избегая использования дополнительной переменной-счётчика.
Пояснение слова: enumerateОзначает "enumerate", обозначая перечисление по одному.
Базовый синтаксис и параметры
Формат синтаксиса
enumerate(iterable, start=0)
Описание параметра
- Параметр iterable:
- Тип: итерируемый объект
- Описание: Итерируемый объект для перечисления.
- Параметр start(необязательный):
- Тип: целое число
- Описание: Начальное значение индекса, по умолчанию 0.
Описание функций
- Возвращаемое значение: Возвращает объект enumerate (итератор).
- Вывод: Каждая итерация возвращает кортеж (индекс, значение).
Примеры
Пример 1: Базовое использование
Пример
fruits = ["яблоко", "банан", "апельсин"]
# Получение индекса и значения
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# По умолчанию начинается с 0
print("---")
for index, fruit in enumerate(fruits):
print(fruit)
Ожидаемый вывод:
0: 苹果 1: 香蕉 2: 橙子 --- 0: 苹果 1: 香蕉 2: 橙子
Пояснение к коду:
- enumerate возвращает кортежи (индекс, значение).
- По умолчанию индекс начинается с 0.
Пример 2: Указание начального индекса
Пример
fruits = ["яблоко", "банан", "апельсин"]
for i, fruit in enumerate(fruits, start=1):
print(f"Фрукт {i}: {fruit}")
# Начать с 10
print("---")
for i, fruit in enumerate(fruits, start=10):
print(f"Индекс {i}: {fruit}")
Ожидаемый вывод:
第1个水果: 苹果 第2个水果: 香蕉 第3个水果: 橙子 --- 索引 10: 苹果 索引 11: 香蕉 索引 12: 橙子
Параметр start может задавать начальный индекс.
Пример 3: Преобразование в список
Пример
fruits = ["яблоко", "банан", "апельсин"]
result = list(enumerate(fruits))
print(result) # Вывод: [(0, 'apple'), (1, 'banana'), (2, 'orange')]
# Преобразовать в словарь (если значения являются строками)
result = dict(enumerate(fruits))
print(result) # Вывод: {0: 'apple', 1: 'banana', 2: 'orange'}
# С использованием спискового включения
squares = [x**2 for x in range(5)]
indexed_squares = [(i, v) for i, v in enumerate(squares)]
print(indexed_squares) # Вывод: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
Ожидаемый вывод:
enumerate можно легко преобразовать в список или словарь.
Пример 4: Практическое применение
Пример
fruits = ["яблоко", "банан", "апельсин", "banana", "apple"]
target = "banana"
for index, fruit in enumerate(fruits):
if fruit == target:
print(f"Найден {target} по индексу {index}")
break
# Найти все совпадения с условием
print("\n"Позиции всех бананов:")
for index, fruit in enumerate(fruits):
if fruit == "banana":
print(index, end=" ") # Вывод: 1 3
# Найти позиции символов в строке
text = "hello"
for i, c in enumerate(text):
print(f"'{c}' находится на позиции {i}")
Ожидаемый вывод:
enumerate часто используется в сценариях, требующих индексов, таких как поиск, замена и т. д.
Пример 5: Работа со словарями
Пример
person = {"name": "Tom", "age": 20, "city": "Пекин"}
# Итерация по парам ключ-значение словаря (требуется items)
for index, (key, value) in enumerate(person.items()):
print(f"{index}: {key} = {value}")
# Создать словарь с порядковыми номерами
items = ["a", "b", "c"]
numbered = {i+1: v for i, v in enumerate(items)}
print(numbered) # Вывод: {1: 'a', 2: 'b', 3: 'c'}
Ожидаемый вывод:
При использовании enumerate со словарём необходимо использовать метод items().
Другие расширения
Встроенные функции Python3