Курс 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. Профилирование с Pandas
  2. Создание GUI на Tkinter
  3. Передача аргументов в Python
  4. Работа с комплексными числами
  5. Особенности множеств в Python
  6. Множественные конструкторы в Python
  7. Склеивание строк без циклов
  8. Замена текста с re.sub()
  9. Фильтрация элементов с помощью islice
  10. Возврат значений из генератора
  11. Идентификатор объекта в Python
  12. Работа со строками в Python
  13. Работа с YAML в Python
  14. Руководство по использованию Colorama
  15. Генерация случайных чисел в Python
  16. Переопределение метода __eq__
  17. Оператор == в Python
  18. Тестирование времени с Freezegun
  19. Работа с массивами в Python
  20. Переопределение метода len
  21. Monkey Patching в Python
  22. Метод lt для сортировки объектов
  23. Встроенные функции Python
  24. Разделение функций на этапы
  25. Фильтрация списка чисел
  26. Функция enumerate() в Python
  27. Defaultdict в Python
  28. Извлечение статей с newspaper3k
  29. Применение функций в Python
  30. Область видимости переменных
  31. Разбиение строки в Python
  32. Подписка на SelectelNews в Twitter
  33. Рациональные числа в Python
  34. Создание копии списка в Python
  35. Изменение элемента списка
  36. Оператор space-invader
  37. Разделение строки с помощью re.split()
  38. Управление сессиями в Python
  39. Просмотр внешнего файла в Python
  40. Создание и использование ChainMap
  41. Функции any() и all() в Python
  42. Создание словарей и множеств в Python
  43. Порядок операций в Python
  44. Поиск шаблона в строке
  45. Работа с датой и временем в Python
  46. Встраивание HTML в Jupyter Notebook

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