2015-09-14 131 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