Cho một xâu nhưtạo một hàm lambda từ một chuỗi ** đúng **
"2*(i+j) <= 100"
Tôi muốn tạo ra các chức năng lambda tương ứng,
fn = lambda i,j: 2*(i+j) <= 100
tôi có thể làm điều này với
eval
, nhưng tôi đang tìm kiếm một phương pháp ít xấu xa hơn.Tôi đã tìm thấy
import ast f = ast.Lambda('i,j', '2*(i+j) <= 100')
nhưng tôi đã không tìm ra cách để thực hiện kết quả!
Lý tưởng nhất, tôi muốn tự động kéo danh sách tham số ('i', 'j') - ngay bây giờ, tôi chỉ sử dụng re.findall ('\ w +'), nhưng tôi rất thích để có thể sử dụng đúng các chức năng hiện có như
cos
thay vì ẩn chúng thành 'từ khóa'.
tôi đang tìm kiếm tại Is there a Python library for handling complicated mathematical sets (constructed using mathematical set-builder notation)? và cố gắng tìm ra cách tốt nhất để phân tích các ký hiệu thiết xây dựng vào lambdas để nuôi đến chế-giải.
Tôi về cơ bản là mong ước cho ast.literal_eval cũng sẽ nhận ra các biến.
Lý tưởng nhất là, được cung cấp i >= 20
Tôi muốn lấy lại ((lambda x: x >= 20), ['i'])
mà sau đó tôi có thể cấp nguồn trực tiếp cho constraint
.
Bạn đang cố gắng giải quyết vấn đề gì? Bạn đang thực hiện một vòng lặp đọc giải thích gp? – starbolin