Курс 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. Определение наиболее частого элемента с помощью collections.Counter
  2. Объединение словарей в Python
  3. Скачать видео с YouTube
  4. Методы обработки строк в Python
  5. Проверка условий в Python
  6. Использование подчеркивания в REPL
  7. Генераторы в Python
  8. Вычисление натуральных логарифмов в NumPy
  9. Передача неизвестных аргументов в Python.
  10. Оператор is в Python
  11. Codecademy в Telegram
  12. Упрощение условных выражений с тернарным оператором
  13. Библиотека itertools: объединение списков
  14. Работа с JSON в Python
  15. Форматирование заголовков в Python
  16. F-строки в Python
  17. Освобождение памяти в Python
  18. Копирование словарей и списков в Python
  19. Применение команды break
  20. Создание словаря через dict comprehension
  21. Работа с zip-архивами в Python
  22. Итерации в Python
  23. ChainMap.new_child() — добавление нового словаря
  24. Преобразование Excel в PDF с Spire.XLS
  25. Удаление файлов с shutil.os.remove()
  26. Управление ресурсами в Python
  27. Python Аргументы по умолчанию
  28. Retrying в Python: повторные вызовы
  29. Группы исключений в Python
  30. Установка пакета в Python
  31. Переопределение оператора % для объектов
  32. Colorama: окрашивание текста в Python
  33. Работа с Path в Python
  34. Сортировка с помощью key
  35. Метод __iand__ для пользовательских классов
  36. Метод splitlines() для разделения строк
  37. Декораторы в Python
  38. Генератор бросков кубиков
  39. Идентификатор объекта в Python
  40. Сортировка в Python
  41. Преобразование данных в Python
  42. Метод rxor для операции побитового исключающего «или»
  43. Создание детектора плагиата
  44. Создание спинбокса в tkinter
  45. Тайное преобразование типа ключа
  46. Открытие и редактирование скриптов Python
  47. Оптимизация поиска в словарях

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