Курс 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. Поиск с библиотекой Google
  3. Метод __call__ в Python
  4. Метод join() для объединения элементов
  5. Поиск индексов подстроки
  6. Преобразование генераторов в циклы
  7. Поиск файлов по шаблону
  8. Операции с массивами в NumPy
  9. Функция pow() — возвести число в степень
  10. *args и **kwargs в Python
  11. Методы classmethod и staticmethod
  12. Оператор Walrus: правильное использование
  13. Оператор del в Python
  14. Обработка исключений в Python
  15. Проверка окончания строки с помощью str.endswith()
  16. Ограничение итераций в Python
  17. Получение ID процесса
  18. Изменения в обработке логических значений
  19. Defaultdict в Python
  20. Сортировка слиянием
  21. Работа с пакетами
  22. Избегание изменяемых аргументов
  23. Открытие, чтение и закрытие файла
  24. Многоточие в Python
  25. Пропуск строк в файле с itertools
  26. Выход из профиля в Django
  27. kwargs в Python
  28. Определение имен функций
  29. Работа с географическими данными.
  30. Enum в Python
  31. Работа с пользовательским вводом
  32. Defaultdict в Python
  33. Магические методы в Python
  34. Функция rsplit() в Python
  35. Метод setdefault() в Python
  36. Комплексные числа в Python
  37. Применение функции к списку
  38. Оператор морж в Python 3.8
  39. Вложенные функции в Python
  40. Метод __imod__ для Python
  41. Нарезка списков в Python
  42. Функции в Python: создание и вызов
  43. capitalize() — изменение регистра первого символа строки
  44. Проверка на палиндром
  45. Python Ellipsis использование
  46. Создание объекта timedelta

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