Почему назначение результата функции карты одной переменной отличается от назначения ее нескольким переменным? - PullRequest
0 голосов
/ 07 октября 2019

Здесь у меня есть 2 строки "12" и "123 54 856 78 " для той же функции, но одна преобразуется в int, а другая нет:

str="12"
a=map(int,str.split())
print(type(a)) #o/p :<class 'map'>
print (a) #o/p :<map object at 0x7f432e95a630>


str1="123 54 856 78 "
a1,b1,c1,d1=map(int,str1.split())
print(type(a1)) #o/p :<class 'int'>
print (a1) #o/p :123

Ответы [ 2 ]

1 голос
/ 07 октября 2019

При первом вызове карты (a=map(int,str.split())) вы устанавливаете объект карты. Во втором вызове карты (a1,b1,c1,d1=map(int,str1.split())) вы устанавливаете значения вашей функции карты на различные значения, сгенерированные функцией карты. если у вас вместо этого было

a1 = map(int(str1.split())
print(type(a1)) # <class 'map'>
0 голосов
/ 07 октября 2019

Функция карты:

Функция Python map () используется для применения функции ко всем элементам указанного итерируемого и возврата объекта карты . Объект карты Python является итератором, поэтому мы можем перебирать его элементы. Мы также можем преобразовать объект карты в объекты последовательности, такие как список, кортеж и т. Д., Используя их фабричные функции.

Мы можем передать несколько итерируемых аргументов в функцию map (), в этом случае указанная функция должна иметь столькоаргументы. Функция будет применяться к этим итерируемым элементам параллельно. С несколькими итеративными аргументами итератор карты останавливается, когда самая короткая итерация исчерпана .

Источник: https://www.journaldev.com/22960/python-map-function

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

Так работает функция карты.

...