Функция eval для lambda-функции

Нужно написать функцию поиска элемента последовательности, удовлетворяющего набору определенных условий.

Функция должна принимать следующие аргументы: Любую итерируемую последовательность или коллекцию, в которой будет производиться поиск. Сколько угодно функций-предикатов (функций, которые проверяют некоторое условие для каждого элемента последовательности). keyword-аргумент mode со значениями "and" или "or", определяющий, каким логическим оператором объединять предикаты. По умолчания: "and". keyword-аргумент default, определяющий значение, которое будет возвращено, если подходящий элемент не будет найден в последовательности. По умолчанию: None. Функция должна возвращать: первый элемент последовательности, который удовлетворяет предикатам согласно mode, т.е. либо всем одновременно, либо любому из них. В 1 строке: последовательность действительных чисел, разделенных пробелами. Во 2 строке: целое число N - количество предикатов. В каждой из следующих N строк: текстовое представление предиката (пример: lambda x: x > 5) В предпоследней строке: строки "and" или "or" - значение mode. В последней строке: действительное число или строка "None" - значение default.


Допустим, мы передаем строковое представление предиката в функцию и при помощи eval его преобразуем к lambda. Вопрос в том, как!! сравнить текущий элемент введенной последовательности со всеми введенными лямбда(с их выражениями) внутри тела основной функции? И еще вопрос: как можно ввести 2 keyword-аргумента в данном случае? Ведь у них должно быть значение по умолчанию. Прошу прощения за длиннопост.


Ответы (0 шт):