2016-11-14 78 views
0

我有三个从a.csv文件中导入变量名称,初始值和约束的列表。我有两个列表。其中一个变量名称是初始值之一。我需要将它们合并,以便它们可以用于功能评估

variables = [x1,x2,x3] 

和初始值

intialvalues = [1,2,5] 

constraints = ['x1+x2', 'x2-x3'] 

我正在寻找一种方式来打破名单成变量约束的第三列表的列表中,这样的约束可以使用eval()进行评估。

编辑:实施例.csv文件

Varible Names,Initial Values,Constraints 
x1,1,x1+x2 
x2,2,x2-x1 
x3,3,x3+x2 
,,x1+x3 

在读取中的列名显然丢弃。

+0

'x1 = initalvalues [0]'。第一个列表似乎很无用 –

+0

反正,似乎你可能需要[SymPy](http://docs.sympy.org/latest/tutorial/intro.html#a-more-interesting-example) –

+0

我需要拳头列表原因程序无法定义它们全部在运行时提供的.csv文件中定义的变量名称。 –

回答

0

那么,你可以在命名空间中声明你的变量,但修改globals()和使用eval()确实是一件可怕的事情,所以只能以此为例。

variables = ['x1','x2','x3'] 
intialvalues = [1,2,5] 
for var, val in zip(variables, intialvalues): 
    globals()[var] = val 

constraints = ['x1+x2', 'x2-x3'] 
for c in map(eval, constraints): 
    print(c) 

# 3 
# -3 
相关问题