【发布时间】:2021-12-30 09:50:33
【问题描述】:
在 Z3 (Python) 中,假设我得到一个具有以下形状的模型:
[c_0 = True, c_3 = False, c_1 = False, c_2 = False]
-
如何对变量进行排序,以便赋值按字母顺序排列?
[c_0 = True, c_1 = False, c_2 = False, c_3 = False] -
如何访问模型的任何元素?我的意思是,如果我这样做:
m = s.model() #equivalent to [c_0 = True, c_3 = False, c_1 = False, c_2 = False]
a = m[0]
print(a)
我得到了c_0,而不是预期的c_0 = True。
为了让这篇文章尽可能简单,我不再添加代码,c 变量只是示例。
我的最终目标是一个方法,给定[c_0 = True, c_3 = False, c_1 = False, c_2 = False]返回一个数组a=[True, False, False, False],其中a[0]对应c_0的值,a[1]对应c_1的值等
编辑
对于 (1),我尝试了 sorted(m, key=str.lower),但出现以下错误:descriptor 'lower' requires a 'str' object but received a 'FuncDeclRef'。这意味着我应该将每个元素转换为 str,这是我不想要的。
我更喜欢 Z3 的“原生”方法,它不会修改变量的类型。
【问题讨论】:
标签: python list variable-assignment z3 z3py