07 Июл 2023
2 мин
1878

Изменения в поведении функции map() в Python 3

Одной из первых функций, с которой сталкиваются начинающие программисты на Python, является функция map(). Эта функция применяет заданную функцию к каждому

Содержание

Одной из первых функций, с которой сталкиваются начинающие программисты на Python, является функция map(). Эта функция применяет заданную функцию к каждому элементу последовательности (например, списка) и возвращает результаты.

В Python 2 эта функция возвращает список. Например, применив функцию chr(), которая преобразует числа в соответствующие символы ASCII, к списку чисел, получим следующий результат:

>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']

Однако, при переходе на Python 3 поведение функции map() изменилось. Теперь эта функция возвращает объект map, а не список. Такой же пример на Python 3 даст следующий результат:

>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>

Это изменение внесено для повышения эффективности: в Python 3 функция map() создает итератор, который производит вычисления по мере необходимости, а не сразу для всего списка. Это может сэкономить память при работе с большими списками.

Тем не менее, если нужно получить результаты в виде списка, это можно сделать, преобразовав объект map в список с помощью функции list(). Вот как это выглядит на Python 3:

>>> list(map(chr, [66, 53, 0, 94]))
['B', '5', '\x00', '^']

Таким образом, для получения списка в Python 3 из результатов функции map() достаточно просто преобразовать результат в список.

Содержание

Добавить комментарий

Определи профессию по рисунку