Biorąc pod uwagę ciąg takich jakutworzyć funkcję lambda z ciągiem ** prawidłowo **
"2*(i+j) <= 100"
Chcę, aby wygenerować odpowiednią funkcję lambda,
fn = lambda i,j: 2*(i+j) <= 100
mogę to zrobić z
eval
, ale szukam mniej złej metody.znalazłem
import ast f = ast.Lambda('i,j', '2*(i+j) <= 100')
ale ja nie dowiedzieć się, jak wykonać wynik!
Idealnie chciałbym również automatycznie wyciągnąć listę parametrów ("i", "j") - w tej chwili używam tylko re.findall ('\ w +'), ale chciałabym być w stanie właściwie wykorzystać istniejące funkcje, takie jak
cos
zamiast cienia ich jako "słów kluczowych".
Szukałem na Is there a Python library for handling complicated mathematical sets (constructed using mathematical set-builder notation)? i próbuje dowiedzieć się, jak najlepiej przeanalizować zapis zestaw budowniczy do lambdas karmić przy ograniczeniu-solver.
Po prostu pragnę dla ast.literal_eval, który rozpoznałby również zmienne.
Idealnie, biorąc pod uwagę i >= 20
Chciałbym odzyskać ((lambda x: x >= 20), ['i'])
, który mógłbym następnie karmić bezpośrednio do constraint
.
Na czym polega problem, który próbujesz rozwiązać? Czy tworzysz pętlę do odczytu i interpretacji gp? – starbolin