2016-11-14 69 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 
相關問題