Курс 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. Форматирование вывода с F-строками
  2. Функции map, filter, reduce
  3. Defaultdict в Python
  4. Округление дробей в Python
  5. Метод ne для сравнения объектов
  6. Генераторы списков
  7. Установка и использование Python-dateutil
  8. Преобразование числа в восьмеричную строку
  9. Функция sleep() в Python
  10. Работа с JSON данными в Python
  11. Переопределение метода __or__()
  12. Генерация тестовых данных с factory_boy
  13. Многопроцессорное программирование в Python
  14. Названия столбцов в Python таблицах
  15. Назначение максимального и минимального значения переменной в Python.
  16. Форматирование строк в Python
  17. Просмотр атрибутов и методов класса
  18. Замена символов в Python
  19. Исправление ошибки NameError
  20. Создание панели меню Tkinter
  21. Присоединение элементов коллекции
  22. Создание вложенного генератора
  23. Удаление дубликатов из списка
  24. Динамическая типизация в Python
  25. Использование *args
  26. None в Python: использование и особенности
  27. Модуль inspect
  28. Псевдонимы в Python
  29. Поиск индекса элемента
  30. Виртуальное окружение Python
  31. Руководство по использованию Colorama
  32. Поиск всех индексов подстроки
  33. Вычисление натурального логарифма в NumPy
  34. Оптимизация сравнения в Python
  35. Работа с срезами в Numpy
  36. Оформление текста в консоли с TermColor
  37. split() — разделение строки
  38. Множественное назначение в Python
  39. Удаление специальных символов
  40. Закрытие файла в Python
  41. Разделение строки с помощью split()
  42. Работа с временем в Python
  43. Метод title() в Python
  44. Проверка кортежей.
  45. Сортировка HTML по CSS-селектору
  46. Подсчет часто встречающихся элементов
  47. Python: Фильтрация списков с помощью filter()

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