2015-09-14 120 views
1

我怎麼能拒絕的Python:單獨列表到變量

def square_error(f1,f2, u1,v1,sigu1,sigv1,rho1, u2,v2,sigu2,sigv2,rho2, u3,v3,sigu3,sigv3,rho3): 

到:

def square_error(x): 
#  x = [0.2,0.5, 
#   1,1,1,1,0.3, 
#   1,1,1,1,0.3, 
#   1,1,1,1,0.3], 
    f1,f2, u1,v1,sigu1,sigv1,rho1, u2,v2,sigu2,sigv2,rho2, u3,v3,sigu3,sigv3,rho3 = x 

的功能只允許目標函數1周的說法,所以我需要把變量成單一的論點。

+0

[\ * args和\ * \ * kwargs?]( http://stackoverflow.com/questions/3394835/args-and-kwargs) – Barmar

+0

'np.array(x)'?我不清楚你在問什麼。 – Alexander

+0

@亞歷山大,我已經更新了我的問題,你能否再次看到它? – cqcn1991

回答

2

是的,你可以做到這一點,但你將不得不語法,其中將unpack the array成功能的參數。

例如:

def square_error(x,y,z): 
    print x,y,z 

arr = [ 1, 2, 3 ] 
square_error(*arr) 

將解壓值1,2,3到參數x,y,z


或者,如果你想要的值unpck到變量的函數中,使用sequence unpacking

def square_error(arr): 
    x,y,z = arr 
    print x,y,z 

arr = [ 1, 2, 3 ] 
square_error(arr) 
+0

對不起,我可能不夠清潔。我需要將'def square_error(x,y,z):'轉換爲'def square_error(x):',並且在函數中,將'x'解壓爲'x,y,z'。我怎樣才能做到這一點? 'scipy.minimize'函數似乎只允許'1參數'。 – cqcn1991

+0

啊,在這種情況下,你不需要做任何特別的事情,我已經編輯了我的答案。 – Serdalis