Как работает map в python?
Задача: На вход программе подается строка с числами новых подписчиков канала по дням, записанных в одну строку через пробел. Необходимо прочитать эти числа и сохранить в списке, как целые числа в порядке их следования в строке. Затем, вывести через пробел на экран максимальное, минимальное и суммарное значения этого списка.
Правильное решение:
i = map(int, input().split()) I = list(i) print(max(I), min(I), sum(I))
Мое решение:
i = str(input().split()) print(max(i), min(i), sum(i))
Объясните, пожалуйста, на указанном выше примере, как работает функция map? Моя логика такова, что нам по заданию нужно получить список, который можно получить, применив в строке метод .split. Почему это не работает? Какая логика этому противоречит? И особенно мне не понятно, каким образом мы применяем .split к int, если это метод строки, а int - число
Согласно документации функция работает следующим образом:
map(function, iterable, *iterables), где аргумент function - функция которая будет применяться к каждому элементу iterable.
То есть, в вашем случае, рольfunction выполняет int, роль iterable у input().split(). Значения, введенные в input являются строкой. split() разделяет эту строку по пробелам и возвращает список из строчных объектов. И далее к каждому элементу этого списка применяется int, который возвращает целое число.
map(int, input().split()) для понимания можно расписать как:
str_list = input().split()
int_list = []
for i in str_list:
int_list.append(int(i))
print(f'{int_list=}')
Только map() возвращает объект класса map, поэтому необходимо применять list, чтобы конвертировать в список.