猿问

同一方程中变量的多个值

A = [18.0,10.0]; B = [13.0,15.0]; C = [10.5,12.0];


这些是变量,并考虑像这样的函数


def hlf(A,B,C):

       return A**(-1.0/2.0)-0.2*B-43+C

print "T:"

hlf(A,B,C)

首先,我想在方程中使用 AB 和 C 的第一个值。在我想使用第二个值之后。我怎样才能做到这一点 ?


四季花海
浏览 206回答 3
3回答

holdtom

map + list注意map可以采用多个可迭代参数:res = map(hlf, A, B, C)[-34.86429773960448, -33.68377223398316]在 Python 2.7 中,map返回一个list. 在 Python 3.x 中map返回一个迭代器,因此您可以延迟迭代或通过list,即耗尽list(map(hfl, A, B, C))。参考:地图(函数,可迭代,...)...如果传递了额外的可迭代参数,则函数必须采用那么多参数并并行应用于所有可迭代项中的项目。zip + 列表理解您可以zip在列表理解中使用。为清楚起见,您应该避免将参数命名为与变量相同的名称。A = [18.0,10.0]; B = [13.0,15.0]; C = [10.5,12.0]; def hlf(x, y, z):    return x**(-1.0/2.0) - 0.2*y - 43 + zres = [hlf(*vars) for vars in zip(A, B, C)][-34.86429773960448, -33.68377223398316]

一只斗牛犬

使用 Numpy 进行矢量化。最佳表现通常最好尝试使用 numpy 对此类操作进行矢量化,因为可以获得最佳性能结果。当您改为使用循环进行矢量化时,您正在使用所有内核,这是最快的解决方案。您应该使用 numpy 对操作进行矢量化。像这样的东西:import numpy as npA = [18.0,10.0]; B = [13.0,15.0]; C = [10.5,12.0];a = np.array(A)b = np.array(B)c = np.array(C)现在你的函数带有新的向量,比如参数:def hlf(a_vector,b_vector,c_vector):    return a_vector**(-1.0/2.0)-0.2*b_vector-43+c_vector最后调用你的新函数向量化:print (hlf(a_vector = a,b_vector = b,c_vector = c))输出:>>> array([-34.86429774, -33.68377223])

交互式爱情

如果你想保持你的功能不变,你应该用以下方式调用它N:for i in range(N):&nbsp; &nbsp; result = hlf(A[i], B[i], C[i])&nbsp; &nbsp; print(result)另一个有趣的方法是用你的函数制作一个生成器:A = [18.0,10.0]B = [13.0,15.0]C = [10.5,12.0];def hlf(*args):&nbsp; &nbsp; i=0&nbsp; &nbsp; while i < len(args[0]):&nbsp; &nbsp; &nbsp; &nbsp; yield args[0][i]**(-1.0/2.0) - 0.2*args[1][i] - 43 + args[2][i]&nbsp; &nbsp; &nbsp; &nbsp; i += 1results = hlf(A, B, C)for r in results:&nbsp; &nbsp; print(r)输出:-34.86429773960448-33.68377223398316如果你想练习 python 生成器,最后一个是相当有教育意义的。
随时随地看视频慕课网APP

相关分类

Go
我要回答