Курс 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. Docstring в Python
  2. Красивый вывод списка
  3. Структуры данных в Python
  4. Генераторы данных
  5. Аннотации типов в Python
  6. Python Метод Union Множеств
  7. Шаблоны Flask: условия и циклы
  8. Обработка ошибок в JSON данных
  9. Работа со словарями в Python
  10. Обновление и получение данных в SQLite
  11. Работа с контекстным менеджером Pool
  12. Вакансии в Nebius
  13. Возврат значений из генератора
  14. Работа с кортежами
  15. Исключение NotImplementedError
  16. Итераторы с потерямиZIP
  17. Работа с файлами в Python
  18. Lambda Functions in Python
  19. Анонимные функции в Python
  20. Вывод с переменной через запятую
  21. Получение ID текущего процесса
  22. Оптимизация методов в Python 3.7
  23. Простой калькулятор Python
  24. Метод count() для списка
  25. Генераторы словарей и множеств
  26. Оператор «is not» в Python
  27. Безопасный доступ к значениям словаря
  28. Вывод переменной и строки в Python
  29. Создание таблиц в терминале с PrettyTable
  30. Объединение словарей в Python
  31. Обновление множества в Python
  32. Проверка элементов списка условием
  33. Метод __ixor__ для побитового исключающего ИЛИ
  34. Именование переменных в Python
  35. Работа с множествами в Python
  36. Функции высшего порядка в Python
  37. Python enumerate() функции
  38. Рациональные числа в Python
  39. Создание обратного итератора
  40. Оператор in для проверки наличия элемента
  41. Преобразование Excel в PDF с Spire.XLS
  42. Функции в одну строку
  43. Объединение словарей в Python
  44. Асинхронное выполнение задач в Python

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