Курс 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. Подчеркивание в REPL
  3. Измерение времени выполнения кода
  4. Переопределение метода __rshift__
  5. Метод join() для объединения элементов строки
  6. Библиотека sh: использование команд bash в Python
  7. Хранение данных
  8. Показ всплывающих окон Tkinter
  9. Импорт объектов из модулей
  10. Делегирование в Python
  11. Функции в одну строку
  12. Оптимизация создания строк
  13. Сериализация и десериализация объектов
  14. Принцип одной функции
  15. Функция map() и ленивая оценка
  16. Сортировка списка по индексам
  17. Резервирование символов в Python
  18. Работа со строками в Python
  19. Особенности ключей словаря в Python
  20. Копирование в Python
  21. ChainMap.new_child() — добавление нового словаря
  22. Сравнение объектов в Python
  23. Перетасовка списков в Python
  24. Enum в Python: создание и использование перечислений
  25. Работа с *args и **kwargs в Python
  26. Обход дочерних элементов BeautifulSoup
  27. Идентификатор объекта в Python
  28. Модуль os: работа с файлами и папками
  29. Игра Виселица на Python
  30. Вывод с переменной через запятую
  31. Возврат нескольких значений
  32. Работа с файлами в Python
  33. Список импортированных модулей в Python
  34. Python-dateutil — работа с датами
  35. Импорт классов из другого файла
  36. Счетчик ссылок в Python
  37. Логические значения в Python
  38. Создание генераторов в Python
  39. Профилирование данных с Pandas
  40. Работа с файлами в Python
  41. Печать в одной строке
  42. Дизассемблирование Python кода
  43. Особенности запятых в Python
  44. Нахождение максимального значения и его индекса в списке
  45. Множественные конструкторы в Python
  46. Преобразование списков в словарь
  47. Конкатенация строк в Python
  48. Функция enumerate в Python

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