Использование функции типа enumerate (arr) для возврата массива массивов - PullRequest
0 голосов
/ 10 июня 2019

Отсутствие ноу-хау Python.Я знаю, как легко это сделать с циклом for, но мне интересно узнать о возможностях Python.

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

filter(lambda x,y: y == arr2[x], list(enumerate(arr1))

Лямбда-функция завершается ошибкой, потому что enumerate возвращает список кортежей, а лямбда-функция интерпретирует их как одиночные аргументы.

есть ли встроенная альтернатива enumerate, которая дала бы мне желаемый результат?(массив массивов)

токовый выход: [(0,value),(1,value),(2,value)...]

желаемый выход: [[0,value],[1,value],[2,value]...]

1 Ответ

3 голосов
/ 10 июня 2019

Это возможно с помощью функции zip. zip встроенная функция doc.

arr1 = [1, 2, 4]
arr2 = [1, 3, 4]
filter(lambda p: p[0] == p[1], [pair for pair in zip(arr1, arr2)])

zip возвращает повторяемые пары, содержащие значения элементов с одинаковыми индексами.

Обновление: да,решение может быть упрощено

filter(lambda p: p[0] == p[1], zip(arr1, arr2))
...