Курс Python → Функция map() и ленивая оценка

Функция map() в Python позволяет применять заданную функцию к каждому элементу последовательности. Однако, одним из недостатков map() является «ленивая оценка» (Lazy Evaluation). Это означает, что вместо того, чтобы сразу обработать весь объект, функция возвращает ссылку на итератор. Пока не вызвать метод, который преобразует итератор в список, кортеж или другой объект, обработка функцией не произойдет.

Для улучшения производительности языка Python, создатели внесли изменения в 3-й версии. Однако, это может привести к тому, что мы не увидим результат обработки данных до тех пор, пока не преобразуем итератор в нужный объект. На небольших объемах данных это не является проблемой, но на практике, где данные разнообразны, это может привести к ошибкам на продакшене, так как мы не сможем заметить потенциальные проблемы заранее.

Пример использования map() с ленивой оценкой:


# Создаем список чисел
numbers = [1, 2, 3, 4, 5]

# Определяем функцию, которую хотим применить
def square(x):
    return x ** 2

# Применяем функцию к каждому элементу списка
result = map(square, numbers)

# Печатаем результат
print(result) # Вывод: 

Чтобы увидеть результат обработки, необходимо преобразовать итератор в список, кортеж или другой объект:


# Преобразуем итератор в список
result_list = list(result)

# Печатаем результат
print(result_list) # Вывод: [1, 4, 9, 16, 25]

Таким образом, при использовании функции map() важно помнить о «ленивой оценке» и преобразовывать итератор в нужный объект для получения результата обработки данных.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Определение размера папок в Python
  2. Передача словаря через **kwargs
  3. Пропуск строк в файле с itertools
  4. Объединение списков с помощью zip
  5. Работа с Requests для HTTP-запросов
  6. lru_cache оптимизация функций
  7. Основные функции и модули Python
  8. Подчеркивание в REPL
  9. Логирование с Logzero
  10. Подсчет часто встречающихся элементов
  11. Многоточие в Python
  12. Работа с Path в Python
  13. Типы возвращаемых значений в Python
  14. Функция reduce() в Python
  15. Извлечение чисел из текста
  16. Создание Telegram-бота на Python
  17. Операции с числами в Python
  18. Создание функций с произвольным количеством аргументов
  19. Использование super() в Python
  20. TON Smart Challenge #2: участие и подготовка
  21. Нан-рефлексивность в Python
  22. Python enumerate() функции
  23. Условные выражения в Python
  24. Генераторы списков в Python
  25. Метод __irshift__ для побитового сдвига вправо
  26. Создание генераторов в Python
  27. Курс по дообучению ChatGPT
  28. Проверка типов с помощью isinstance
  29. Использование defaultdict в Python
  30. Декоратор total_ordering для сравнения объектов
  31. Метод split() для разделения строк
  32. Оператор del в Python
  33. Удаление символа из строки
  34. Получение имени функции с помощью inspect
  35. Декораторы в Python
  36. Ускорение кода с помощью векторизации
  37. Умножение строк и списков
  38. Автоматизация с Python
  39. Форматирование строк в Python
  40. Необязательные аргументы в Python
  41. Расширение информации об ошибке в Python

Marketello читают маркетологи из крутых компаний