Курс 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. Настройка шрифта и цвета в Tkinter
  2. Инициализация структур данных
  3. Встроенные функции Python
  4. Переворот последовательности
  5. Расширение информации об ошибке в Python
  6. Атрибуты класса и экземпляра
  7. Работа с CSV файлами в Python
  8. Оператор in в Python
  9. Метод init в Python
  10. Создание списков в Python
  11. Работа с argparse
  12. Работа с многоуровневыми словарями в Python
  13. Работа с кортежами в Python
  14. Python enumerate() использование
  15. Изменяемые и неизменяемые объекты
  16. Создание итератора
  17. Итерация по итерируемым объектам
  18. Исправление ошибки NameError
  19. Генераторы в Python
  20. Функция zip() в Python
  21. Метод ior для битовых операций
  22. Метод setdefault() в Python
  23. Обработка исключений в Python
  24. Функция sleep() в Python
  25. Генераторы в Python
  26. Цикл for в Python
  27. Потоковый ввод в Python
  28. Парсинг статей с Newspaper3k
  29. Переопределение метода __lshift__
  30. Удаление элементов по срезу
  31. Подписка на SelectelNews в Twitter
  32. Функция reduce() в Python
  33. Логирование с Logzero: ротация файла
  34. ROT13 Шифр Цезаря в Python
  35. Эффективная конкатенация строк в Python
  36. Оценка точности модели
  37. Множества и frozenset
  38. Работа с NumPy
  39. Роль ключевого слова self
  40. Поиск с библиотекой Google
  41. Умножение строк и списков
  42. Роль запятой в Python
  43. Поиск подстроки в строке
  44. Дефолтные параметры в Python
  45. Профилирование данных с Pandas
  46. Работа с Enum в Python3.

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