Из-за названия вашей функции я предложу другой подход: использование уменьшите .
По сути, вы должны реализовать функцию, возвращающую логическое значение для одного элемента. Затем используйте reduce
, чтобы применить эту функцию к каждому элементу вашего списка.
f = lambda x : 1.0 <= x < 50
# Is equivalent to
def f(item):
return 1.0 <= item < 50
Затем примените к вашему списку:
print filter(f, [0,1,2])
[1, 2]
Применительно к вашей проблеме вы должны убедиться, что размер отфильтрованного списка совпадает с исходным списком (или изменить функцию oracle, чтобы сделать наоборот, и убедиться, что результат пуст).
def check(lst):
return len(lst) == len(filter(f, lst))
print check([0,1,2])
# Outputs False
print check([1,2,3])
# Outputs True
Кроме того, "True"
и "False"
являются напечатанными строками, тогда как вы хотите, чтобы они были логическими. Следовательно True
или False
.