Курс 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. Транспонирование 2D-массива с помощью zip
  2. Проверка окончания строки с помощью str.endswith()
  3. Функция format() в Python
  4. Работа с NumPy.linalg
  5. Подсказки типов в Python
  6. Проверка типа объекта в Python
  7. Измерение времени выполнения кода
  8. Обновление данных через PUT запрос
  9. Руководство по Pymorphy2
  10. Названия столбцов в Python таблицах
  11. Хранение данных
  12. Метод Self в Python
  13. lru_cache оптимизация функций
  14. Декоратор total_ordering для сравнения объектов
  15. Основные операции с библиотекой Numpy
  16. Конкатенация строк с методом join()
  17. Подсчет элементов в списке с Counter
  18. Метод Enumerate() для списков
  19. Капитализация строк
  20. Работа со строками в Python.
  21. Управление контекстом выполнения
  22. Работа с изображениями Pillow
  23. Сортировка элементов в Python
  24. Порядок и длина множеств в Python
  25. Объединение Python и Shell
  26. Проверка файла .py на синтаксис.
  27. Установка и использование Virtualenv
  28. Экспорт данных в файл.
  29. Декораторы с @wraps
  30. Генерация UUID в Python
  31. Управление пакетами с pip
  32. Синхронизация потоков с time.sleep()
  33. Выборка чисел
  34. Избегание циклических зависимостей классов в Python
  35. Транспонирование 2D-массива с помощью zip
  36. Метод rmatmul для пользовательских матриц
  37. Изменение списка срезами
  38. Очистка данных с помощью pandas
  39. Решатель судоку на Python с pygame
  40. Создание GUI на Tkinter
  41. Создание уникального множества
  42. Многострочные комментарии в Python
  43. Декораторы классов
  44. Оптимизация поиска в словарях
  45. Динамическая типизация в Python
  46. Работа с getopt
  47. Ключевое слово global в Python
  48. Проблемы с именами переменных

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