Курс 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. Проверка на палиндром
  2. Проверка однородности элементов списка
  3. Модуль os в Python: работа с файлами
  4. Функция reversed() в Python
  5. Возврат нескольких значений
  6. Pretty-printing JSON в Python
  7. Работа со строками в Python.
  8. Python: Splat-оператор и splatty-splat
  9. Обезопасьте ввод данных
  10. Отладка утечек памяти в Python
  11. Измерение времени выполнения кода
  12. Использование модуля math
  13. Python Поверхностное Копирование
  14. Библиотека sh: использование команд bash в Python
  15. Принципы LSP и ISP в Python
  16. Сравнение def и lambda функций в Python
  17. Создание словарей в Python
  18. UserString в Python
  19. Оптимизация гиперпараметров с Scikit Optimize
  20. Преобразование числа в список цифр
  21. Основы работы с базами данных в Python
  22. Профилирование с Pandas
  23. Оператор walrus в Python
  24. Метод __irshift__ для Python
  25. Управление памятью в numpy.
  26. Метод __ilshift__ для битового сдвига влево
  27. Работа со словарями в Python
  28. Генераторы в Python
  29. Сортировка HTML-элементов
  30. Разделение строки с помощью split()
  31. Метод count() для списка
  32. Установка Home Assistant
  33. Разделение строки с помощью re.split()
  34. Глубокое копирование объектов
  35. Исключение NotImplementedError
  36. Генерация фальшивых данных с Faker
  37. Обход элементов в Python
  38. Обработка данных в Python
  39. Логирование в Python
  40. Переопределение метода __eq__
  41. Функция map() в Python
  42. Оценка выражений генератора в Python
  43. Замыкания в Python
  44. Ускорение обработки данных с %autoawait
  45. Замена текста в Python

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