Курс 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. Сравнение def и lambda-функций
  2. Создание вкладок с TKinter
  3. Декораторы с аргументами
  4. Оператор in для Python
  5. Работа с очередями в Python
  6. Функция count() в Python
  7. Работа с множествами в Python
  8. Работа с множествами в Python
  9. Объединение списков в Python.
  10. Импорт модулей и пакетов в Python
  11. Работа с модулем cmath
  12. Поиск уникальных элементов строкой в Python
  13. Работа с YAML в Python
  14. Python Поверхностное Копирование
  15. Сортировка данных в Python
  16. Генераторы списков в Python
  17. Удаление специальных символов
  18. Декоратор total_ordering для сравнения объектов
  19. Генераторы в Python
  20. Генератор надежных паролей
  21. Печать в одной строке
  22. Удаление URL-адресов в Python
  23. Работа с изображениями Pillow
  24. Подробная информация о %pinfo
  25. Генерация UUID в Python
  26. Различия символов в Python
  27. Импорт с альтернативным именем
  28. Циклы for в Python
  29. Установка Python — Простое руководство
  30. Преобразование вложенного списка
  31. ChainMap.new_child() — добавление нового словаря
  32. Оператор Walrus в Python
  33. Работа с JSON в Python
  34. Big O оптимизация
  35. Переопределение метода sub
  36. Списковый компрехеншен.
  37. Работа с timedelta в Python
  38. Работа с JSON данными в Python
  39. Поиск индексов в списке
  40. Работа с дробями в Python
  41. Группировка элементов Python
  42. Списки в Python: синтаксис представления
  43. Векторизация в Python с NumPy.
  44. Numpy: объединение массивов

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