Функция map
— это полезный инструмент для применения определенного процесса или функции к каждому элементу в списке, и она есть как в Python, так и в JavaScript. В этом посте мы рассмотрим, как map
работает на обоих языках, а также несколько примеров различных вариантов использования и различия между ними.
Представьте, что у вас есть список ингредиентов для рецепта, и вы хотите создать новый список с размерами для каждого ингредиента. В Python map
был бы похож на шеф-повара, который берет каждый ингредиент и называет его количество по ходу приготовления, не записывая его. Это более эффективно, если вам нужно использовать измерения только один раз, но если вы хотите сохранить измерения на потом, вам придется записать их самостоятельно (путем переноса вызова map
в list
).
В JavaScript map
похож на шеф-повара, который записывает количество каждого ингредиента на отдельном листе бумаги, прежде чем перейти к следующему. Это займет немного больше времени, но в итоге вы получите список всех измерений, к которым вы можете вернуться в любое время.
Общие черты:
map
принимает список значений и функцию в качестве входных данных и применяет функцию к каждому элементу в списке.map
возвращает новый список с результатами применения функции к каждому элементу в спискеmap
часто используется для преобразования списка значений из одной формы в другую.
Отличия:
- В Python
map
возвращает итератор, который выдает результаты на лету, а не создает новый список. Это может быть более эффективным, если вам нужно перебрать результаты только один раз, но это означает, что вам нужно обернуть вызовmap
вlist
, если вы хотите создать новый список со всеми результатами. - В JavaScript
map
возвращает новый массив со всеми результатами, поэтому вам не нужно делать ничего особенного для создания нового списка. - В JavaScript вы можете передать
map
"стрелочную функцию" в качестве функции обратного вызова, что является сокращением.
Пример 1. Преобразование списка строк в верхний регистр
В Питоне:
words = ['cat', 'window', 'defenestrate'] uppercase_words = list(map(str.upper, words)) print(uppercase_words) # ['CAT', 'WINDOW', 'DEFENESTRATE']
В Javascript:
const words = ['cat', 'window', 'defenestrate']; const uppercaseWords = words.map(word => word.toUpperCase()); console.log(uppercaseWords); // ['CAT', 'WINDOW', 'DEFENESTRATE']
Пример 2. Умножение каждого элемента в списке чисел на постоянное значение
В Питоне:
numbers = [1, 2, 3, 4] doubled_numbers = list(map(lambda x: x * 2, numbers)) print(doubled_numbers) # [2, 4, 6, 8]
В Javascript:
const numbers = [1, 2, 3, 4]; const doubledNumbers = numbers.map(x => x * 2); console.log(doubledNumbers); // [2, 4, 6, 8]
Пример 3. Преобразование списка температур из градусов Фаренгейта в градусы Цельсия
В Питоне:
def fahrenheit_to_celsius(fahrenheit): celsius = (fahrenheit - 32) * 5 / 9 return int(celsius) temperatures_fahrenheit = [32, 60, 212] temperatures_celsius = list(map(fahrenheit_to_celsius, temperatures_fahrenheit)) print(temperatures_celsius) # [0, 15, 100]
В JavaScript:
const fahrenheitToCelsius = fahrenheit => { const celsius = (fahrenheit - 32) * 5 / 9; return Math.floor(celsius); }; const temperaturesFahrenheit = [32, 60, 212]; const temperaturesCelsius = temperaturesFahrenheit.map(fahrenheitToCelsius); console.log(temperaturesCelsius); //[0, 15, 100]
Пример 4. Округление списка чисел до ближайшего целого числа
В Питоне:
import math numbers = [1.5, 2.3, 3.7, 4.2] rounded_numbers = list(map(math.floor, numbers)) print(rounded_numbers) # [1, 2, 3, 4]
В JavaScript:
const numbers = [1.5, 2.3, 3.7, 4.2]; const roundedNumbers = numbers.map(Math.floor); console.log(roundedNumbers); //[1, 2, 3, 4]
Пример 5. Создание списка квадратных корней из списка чисел
В Питоне:
import math numbers = [1, 4, 9, 16] square_roots = list(map(int, map(math.sqrt, numbers))) print(square_roots) # [1, 2, 3, 4]
В JavaScript:
const numbers = [1, 4, 9, 16]; const squareRoots = numbers.map(Math.sqrt).map(x => Math.floor(x)); console.log(squareRoots); //[1, 2, 3, 4]
Несмотря на то, что между тем, как map
работает в Python и JavaScript, есть несколько различий, основные функции одинаковы. Таким образом, независимо от того, на каком языке вы работаете, вы можете использовать map
для простого применения преобразований к вашим данным.
Я надеюсь, что эта статья помогла вам познакомиться с функцией map
и показать вам различные способы ее использования. Удачного кодирования!