Курс 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. Вывод сложных структур данных с помощью pprint
  2. Упрощение условных выражений с тернарным оператором
  3. Реверс строки и списка в Python.
  4. Операции с числами в Python
  5. Применение функции к каждому элементу списка
  6. Метод setitem в Python
  7. Вакансии в Nebius
  8. Цикл for в Python
  9. Сортировка с помощью key
  10. Генераторы данных
  11. Преобразование текста в речь с Python
  12. Объединение объектов в Python
  13. Нахождение самого длинного слова в списке с помощью max
  14. Округление дробей в Python
  15. Объединение словарей в Python
  16. Импорт объектов из модулей
  17. Упрощение работы с JSON-данными в Python
  18. Создание виртуальной среды
  19. Python OrderedDict и fromkeys() — работа с словарями
  20. Поток данных в Python
  21. Работа с enumerate()
  22. Python: Фильтрация списков с помощью filter()
  23. Нахождение пересечения множеств
  24. Переменные класса и экземпляра
  25. Декораторы в Python
  26. Настройка вывода NumPy
  27. Аннотации типов в Python
  28. Метод split() в Python
  29. Порядок и длина множеств в Python
  30. Названия столбцов в Python таблицах
  31. Форматирование данных с pprint
  32. Основы работы со строками в Python
  33. Измерение времени выполнения кода
  34. Проверка типов с использованием isinstance
  35. Метод bool() в Python
  36. Python defaultdict добавление ключа
  37. Создание детектора плагиата
  38. Создание GUI с Tkinter: Entry
  39. Метод ne для сравнения объектов
  40. Итерация по копии коллекции
  41. Модуль xkcd: добавление юмора в Python
  42. Декоратор total_ordering для класса Point
  43. Декораторы в Python
  44. Отладка производительности Python
  45. Удаление дубликатов из списка

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