Для строки, такой как
"2*(i+j) <= 100"
Я хочу сгенерировать соответствующую лямбда-функцию,
fn = lambda i,j: 2*(i+j) <= 100
-
Я могу сделать это с помощью
eval, но я ищу менее злой метод. -
Я нашел
import ast f = ast.Lambda('i,j', '2*(i+j) <= 100')но я не знаю, как выполнить результат!
-
В идеале я хотел бы автоматически вывести список параметров ('i', 'j') - прямо сейчас, я просто использую re.findall('\ w +'), но я бы чтобы иметь возможность правильно использовать существующие функции, такие как
cosвместо того, чтобы затенять их как "ключевые слова".
Я смотрел Есть ли библиотека Python для обработки сложных математических наборов (построена с использованием математической нотации set-builder)? и пытается выяснить, как лучше всего разобрать обозначение set-builder в lambdas для подачи на решатель ограничений.
Я в основном желаю ast.literal_eval, который также распознает переменные.
В идеале, учитывая i >= 20, я хотел бы вернуться ((lambda x: x >= 20), ['i']), который я мог бы затем напрямую передать на constraint.