Как передать более одного параметра в функцию отображения Python? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь использовать функцию карты в списке списка.Как вы проходите каждое расстояние до функции карты.Если вы видите код ниже, он вычисляет расстояния и возвращает вывод в виде списка.

import math
locations = [[1, 2], [2, 3]]
distance = lambda x,y : math.sqrt(x**2 + y**2)
output = list(map(distance, locations))

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'y'

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Вы можете использовать функцию math.hypot вместо того, чтобы писать свою собственную:

import math
import itertools
locations = (1, 2), (2, 3), (3, 4)
print(*itertools.starmap(math.hypot, locations), sep='\n')

Пожалуйста, используйте itertools.starmap, если вы хотите иметь что-то, кроме двух местоположений.

0 голосов
/ 29 ноября 2018

Исходя из всех ответов, мое решение ниже

import math
import itertools
locations = [[1, 2], [2, 3], [3, 4]]
output = list(itertools.starmap(lambda x,y: math.sqrt(x**2  + y**2), locations))

Я отправляю эти вычисленные значения в другую функцию, поэтому в моем случае, я думаю, сохранение этого в списке - единственный вариант.

0 голосов
/ 29 ноября 2018

Попробуйте:

import math
locations = [[1, 2], [2, 3]]
distance = lambda x,y : math.sqrt(x**2 + y**2)
output = list(map(distance, *locations))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...