Найти тему
Машинное обучение

👉 Продвинутая работа с map

Параметры map

А вы знали, что у функции map три параметра? 

Функция map используется для того, чтобы делать однотипные операции над наборами данных. Например, с ее помощью удобно приводить типы данных: 

 

>>> chr_nums = ['1', '2', '3', '4', '5']

>>> list(map(int, chr_nums))

[1, 2, 3, 4, 5]

или округлять значения: 

 

>>> floats = [2.2865, 3.6420, 6.6418, 8.7231, 3.1528]

>>> list(map(round, floats))

[2, 4, 7, 9, 3]

Но у map есть еще третий параметр, который используют, чтобы передать аргументы в обрабатывающую функцию. 

Например, если мы хотим возвести все числа в квадрат, то двойки в аргументы можно передать как список:  

 

>>> list(map(pow, range(10), [2]*10))

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

То же с округлением: 

 

>>> floats = [2.2865, 3.6420, 6.6418, 8.7231, 3.1528]

>>> list(map(round, floats, [3]*len(floats)))

[2.287, 3.642, 6.642, 8.723, 3.153]

Либо так: 

 

>>> from itertools import repeat

>>> list(map(round, floats, repeat(1)))

[2.3, 3.6, 6.6, 8.7, 3.2] 

repeat бесконечно повторяет нужную константу, а map ориентируется на самую короткую из введенных последовательностей. Получается ровно столько параметров для map, сколько нужно. 

Больше в доке: map, repeat. 🐠

Machinelearning