Курс 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. Создание namedtuple из словаря
  3. Команда %dhist — список посещенных каталогов
  4. Строковое представление объектов
  5. Анализ кода — Python
  6. Разработка игры Pong с turtle
  7. Измерение времени выполнения кода с помощью time
  8. Модуль subprocess: запуск внешних команд
  9. Функция zip() в Python
  10. Метод __irshift__ для Python
  11. Преобразование символов с помощью map
  12. Создание вложенных циклов for
  13. Метод is_absolute() для PurePath
  14. Работа с индексами списков
  15. Преобразование чисел в слова
  16. Оператор «is not» в Python
  17. Генераторы по генератору
  18. Функция zip() в Python
  19. Создание словарей с defaultdict()
  20. Показ всплывающих окон Tkinter
  21. Описание скриптов в README
  22. Обработка исключения UnboundLocalError
  23. Поиск простых чисел
  24. Метод ior для битовых операций
  25. Работа со строками в Python
  26. Объединение словарей в Python
  27. Объединение списков в Python
  28. Копирование объектов в Python
  29. Работа со списками
  30. Документирование функций в Python
  31. Декораторы в Python
  32. Избегайте изменяемых аргументов
  33. Создание копии итератора
  34. Метод __irshift__ для побитового сдвига вправо
  35. ChainMap.new_child() — добавление нового словаря
  36. Замена символов в строке
  37. Перевернуть список в Python
  38. Анонимные функции Lambda
  39. Создание класса очереди
  40. Условное добавление элементов в список
  41. Итерация по итерируемым объектам
  42. Функциональное программирование.
  43. Срезы в Numpy
  44. Компиляция регулярных выражений
  45. List Comprehension Tutorial
  46. 9 уловок для чистого кода
  47. Форматирование вывода с F-строками

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