Map int input split python 3 что это
Перейти к содержимому

Map int input split python 3 что это

  • автор:

Map int input split python 3 что это

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Ввод данных на Python

Возникла проблема с вводом данных, до этого не работал на сайте и при вводе мне не понятно как это делать. Вместо стандартного int(input()) я встретил ввод map(int, input().split()) . Объясните пожалуйста.

Отслеживать
76.7k 6 6 золотых знаков 54 54 серебряных знака 120 120 бронзовых знаков
задан 6 мар 2019 в 17:52
23 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака

Что именно непонятно? input() возвращает строку, split() делит строку по пробелам и выдаёт список, map вызывает указанную функцию для каждого элемента указанного списка и возвращает новый список (точнее итератор). Про всё это вы легко можете прочитать в любой документации и в любом учебнике по Python

6 мар 2019 в 18:00

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

map(int, input().split()) можно использовать в случае, если вводится несколько чисел через разделитель (в данном случае через пробел)

  • input() возвращает строку (например: «1 2 3» )
  • split() преобразует строку в list по разделителю — по умолчанию это пробел (результат: [«1», «2» ,»3″] )
  • map преобразует список в соответствие с функцией — в данном случае int(elem) (результат: [1, 2 , 3]

В результате выполнения кода получится объект map , который хорошо бы еще было обернуть в list ( list(map(. ))

Отслеживать
ответ дан 6 мар 2019 в 18:31
ChocolateSwan ChocolateSwan
814 5 5 серебряных знаков 8 8 бронзовых знаков

Можно еще добавить что list(map(int, input().split())) тоже самое что [int(i) for i in input().split()] . А еще, split без параметров делит не просто по пробелам, а по их множеству: ‘1 2 3’.split() -> [‘1’, ‘2’, ‘3’] , а вот строго по пробелу: ‘1 2 3’.split(» «) -> [‘1’, », », ‘2’, ‘3’] . И еще, просто map удобно использовать если известно количество элементов, например если их 3: a, b, c = map(int, input().split()) , но при желании можно обработать и сколько угодно: a, *b = map(int, input().split()) — первое числор попадет в a , а все остальные как список в b

Программирование в «Эврике»

В языке Python имеется встроенная функция input(), с помощью которой можно читать ввод пользователя. Эта функция принимает необязательный строковый аргумент (который выводится в консоли как строка приглашения к вводу) и ожидает, пока пользователь введет ответ и завершит ввод клавишей Enter (или Return). Если пользователь не введет никакой текст и просто нажмет клавишу Enter, функция input() вернет пустую строку, в противном случае она возвращает строку, содержащую ввод пользователя без символа завершения строки.

Таким образом, все, что ввел пользователь, можно считать в одну строковую переменную с помощью команды
s = input()

Если предполагается, что вводится число (а не набор символов), придется преобразовать входную строку к числовому типу:
n = int(input()) # для целых
d = float(input()) # для дробных чисел

Если в строке вводится не одно число, а сразу несколько (например, четыре), придется воспользоваться функцией map:
a, b, c, d = map (int, input().split())

Что при этом происходит?
input().split() — разделить строку на части по пробелам
map — применить
int — эту операцию (преобразование в число) к каждой части
input().split() — разделить строку на части по пробелам.

Функциональное программирование

Функциональное программирование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).wiki

Функция высшего порядка — в программировании функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата.

map() — применить функцию ко всем элементам списка

map(function_to_apply, iterable, . ) — применяет функцию _function_to_apply ко всем элементам последовательности iterable. Если заданы дополнительные аргументы (последовательности), то функция function_to_apply должна принимать столько аргументов, сколько последовательностей переданно далее в map.

a = map(int, input().split()) # 3 14 27 -1 

Далее по полученному объекту типа map можно итерироваться.

for x in a: print(x) # 3 # 14 # 27 # -1 

Еще о различиях map и list:

>>> a = map(int, input().split()) 3 14 27 -1 # ввели эти числа >>> a # map - это не список 0xffd87170> >>> print(a) 0xffd87170> >>> b = list(a) # но из map можно получить list >>> b [3, 14, 27, -1] >>> c = list(a) >>> c # итерироваться можно только ОДИН раз. [] 
map — пример: квадраты чисел

Посчитаем квадраты чисел, заданных в списке.

items = [1, 2, 3, 4, 5] squared = [] for i in items: squared.append(i**2) 
items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items)) 
map — пример: задаем числа и их степени

Возведем числа из списка в степени, которые тоже заданы списком

items = [10, 2, 3, 4] n = [ 3, 1, 2, 0] res = [] for i, x in enumerate(items): res.append(x**n[i])) 
items = [10, 2, 3, 4] n = [ 3, 1, 2, 0] res = list(map((lambda x, i: x**i), items, n)) 
map — список входных данных может быть списком функций
def multiply(x): return (x*x) def add(x): return (x+x) funcs = [multiply, add] for i in range(5): value = list(map(lambda x: x(i), funcs)) print(value) # Вывод: # [0, 0] # [1, 2] # [4, 4] # [9, 6] # [16, 8] 

filter() — оставить те элементы, для которых True фильтрующая фукнция

filter(filter_function, list_of_inputs) — оставить только те элементы списка list_of_inputs, у которых применение функции filter_function вернуло True.

number_list = range(-5, 5) less_than_zero = list(filter(lambda x: x < 0, number_list)) print(less_than_zero) # Вывод: [-5, -4, -3, -2, -1] 

filer похож на цикл, но он является встроенной функцией и работает быстрее.

reduce() — свертка списка с помощью функции

В Python 3 встроенной функции reduce() нет, но её можно найти в модуле functools.

reduce(function_to_apply, list_of_inputs, init_value) — сворачивает элементы списка list_of_inputs в один объект, применяя function_to_apply по очереди к последовательным парам элементов. Предполагая для первой пары init_value — необязательный параметр.

Найдем произведение чисел из списка. Классический вариант:

product = 1 list = [1, 2, 3, 4] for num in list: product = product * num # product = 24 
from functools import reduce product = reduce((lambda res, x: res * x), [1, 2, 3, 4]) # 24 product = reduce((lambda res, x: res * x), [1, 2, 3, 4], 1) # эквивалентно 
(((2*3)*4)*5)*6 

Цепочка вызовов связывается с помощью промежуточного результата (res). Если список пустой, просто используется третий параметр (в случае произведения нуля множителей это 1):

reduce(lambda res, x: res*x, [], 1) # 1 

Реверс списка (если забыли про функцию reversed):

>>> reduce(lambda res, x: [x]+res, [1, 2, 3, 4], []) [4, 3, 2, 1] 

sum — сумма элементов списка

all

all(iterable) — возвращает True если все элементы в iterable истины (или этот iterable пустой). То же самое, что:

def all(iterable): for element in iterable: if not element: return False return True 

any

any(iterable) — возвращает True если хоть один элемент в iterable истин (если этот iterable пустой, возвращается False). То же самое, что:

def any(iterable): for element in iterable: if element: return True return False 

results matching » «

No results matching » «

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *