Python: фильтрация списков с помощью лямбды - PullRequest
0 голосов
/ 03 апреля 2020

Напишите лямбда-функцию Python, которая принимает список с именем my_list и возвращает список, включающий только четные числа в том же порядке.

Мое решение:

f = list(filter(lambda x: (x % 2 == 0), my_list))
print(f)

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

2 вопроса:

  1. Правильно ли выглядит мое решение?
  2. Если да, то как мне адаптировать его так, чтобы домашняя работа принимала различные входные данные?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Выглядит неправильно, поскольку f - это не функция lambda, а list. Хорошо, он использует lambda, но это не lambda.

Возможно, вам нужно написать что-то вроде:

f = lambda my_list: list(filter(lambda x: (x % 2 == 0), my_list))

или подобное.

Например, :

f = lambda my_list: [x for x in my_list if x % 2 == 0]

также должно удовлетворять требованию.


Конечно, теперь print(f) будет "печатать функцию".

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

Я выполняю домашнюю задачу онлайн, и она запускает различные тестовые примеры

Ваша функция на самом деле правильная. Но, ну, для оценки онлайн-кодирования обычно используют stdin в качестве входных данных. Python используйте метод input() для извлечения строки из stdin. Поэтому, если вы хотите, чтобы ваша заявка принимала различные данные, вам, вероятно, нужно добавить это.

my_list = list(map(int, input().split(' ')))

Это разделит ввод строки по пробелу ' ' в список. Затем все содержимое списка преобразуется в целое число с помощью функции map. Поскольку возвращаемое значение функции карты не является списком, вам нужен метод list, чтобы преобразовать map результат в список. Новый список будет сохранен в переменной my_list.

Но, опять же, это зависит от вашей входной спецификации. Если ваши входные данные, например: "1, 2, 4, 5". используйте ', ' в качестве параметра разделения.

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