Как отслеживать индексы, используя карту и лямбда-выражение? - PullRequest
0 голосов
/ 04 апреля 2020

Пока я выполняю приведенный ниже код, я хотел бы отслеживать индексы, потому что мне нужно потом отсортировать список результатов:

my_list = np.array([[[5,8], [2,2], [9,5]], [[5,8], [9,5], [2,2]], [[9,5], [5,8], [2,2]]])

result = list(map(lambda x: myFunction(list(map(lambda x: x[0:], x))), my_list))

Я пытался использовать enumerate(my_list), но я получил ошибку:

result = list(map(lambda x: myFunction(list(map(lambda x: x[0:], x))), enumerate(my_list)))
TypeError: 'int' object is not subscriptable

Если я использую для l oop с перечислением, он работает нормально, но я хотел бы знать, есть ли другое решение, использующее map.

1 Ответ

0 голосов
/ 04 апреля 2020

Перечисление генерирует последовательность пар значений, поэтому вашей лямбда-функции необходимо распаковать пары значений:

Попробуйте:

result = list(map(lambda x: myFunction(list(map(lambda y: y[0], y[1][0:], y[1]))), enumerate(my_list)))

Где:

  1. y - пара (i, x) на каждой итерации карты из перечисления
  2. i - индекс
  3. x - i-й подсписок my_list.

Лямбда-функция должна распаковать y, чтобы вернуть i и x обратно

С: i = y [0] и x = y [1])

Поскольку теперь он отправляет триплеты в myFunction, вы также должны обновить его, чтобы принимать триплеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...