@demchenkodenis

Как использовать функции map() filter() чтобы сохранить в массиве индексы четных элементов другого массива?

Добрый день!
Подскажите пожалуйста для решения вопроса: Сохранить в массиве индексы четных элементов другого массива.
Использовал код
numbers = [1, 2, 3, 4, 5, 6]
indx_numb = list(filter(lambda x: numbers[x] % 2 == 0, numbers))

выдал ошибку list index out of range. При использовании map() тоже самое
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 3
LaRN
@LaRN
Senior Developer
В лямбду передаётся сам элемент, а не его индекс, поэтому и ошибка.
По идее нужно как-то так
lambda x: x% 2 == 0
Но при таком варианте будут возвращаться сами элементы а не их индексы.
Ответ написан
Комментировать
CrazzyDi
@CrazzyDi
Если мапы и фильтры не обязательны, то так:

indx_numb = [x[0] for x in enumerate(numbers) if not x[1] % 2]
Ответ написан
Комментировать
@demchenkodenis Автор вопроса
Ребята спасибо за помощь! Разбираюсь с темой эффективности кода за счет использования list comprehensions, map() на примере одной задачи с enumerate() можно еще так
indx_numb = v for k, v in enumerate(nums) if not k % 2
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы