Параметры 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, сколько нужно.