Курс 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. Динамические маршруты во Flask
  2. Глобальные переменные в Python
  3. Удаление ключей из словаря
  4. Список методов и атрибутов
  5. Форматирование данных с помощью pprint
  6. Оператор continue в Python
  7. Обработка элементов в Python
  8. Транспонирование 2D-массива с помощью zip
  9. Работа с массивами в Numpy
  10. Хэш-функции в Python
  11. Нахождение самого длинного слова в списке с помощью max
  12. Глобальные переменные в Python
  13. Освобождение памяти в Python
  14. Распаковка аргументов в Python
  15. Работа со словарями
  16. Определение функций с необязательными аргументами
  17. Оператор Walrus в Python
  18. Управление IP-адресами через прокси
  19. Чтение и запись TOML-конфигов
  20. Игра Виселица на Python
  21. Метод invert для побитового отрицания
  22. Просмотр атрибутов и методов класса
  23. Магические методы в Python
  24. Сортировка и разворот списка
  25. Изменение элемента списка
  26. Работа со слайсами
  27. Лямбда-функции в Python
  28. Многострочные комментарии в Python
  29. Создание новых функций через partial
  30. Функция print() — вывод информации
  31. Утечки переменных цикла в Python 3.x
  32. Dict Comprehension в Python
  33. Экспорт данных в файл.
  34. Списковое включение в Python
  35. Сглаживание списка
  36. Атрибуты класса и экземпляра
  37. Основные операции с Numpy
  38. Проблема сравнения словарей
  39. Оператор zip в Python
  40. Создание пользовательской коллекции в Python
  41. Основы работы со строками в Python
  42. Метод enumerate() в Python
  43. Работа с комплексными числами в Python
  44. Метод rlshift для битового сдвига
  45. Метод rsub для пользовательских чисел
  46. f-строки в формате строк
  47. Поиск всех индексов подстроки

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