我可以在列表中插入使用lambda x创建的函数吗?(python)

我可以在列表中插入使用lambda x创建的函数吗?(python),python,list,function,numpy,lambda,Python,List,Function,Numpy,Lambda,我需要构建一个多项式函数,比如a_0+a_1x+a_2x^2。。。我正在尝试完成整个插值过程。 我有这个: def Create_F(Numero, Array): Y = lambda x: x Lista = list(Array) F_x = [] for i in range(Numero): G_x = lambda x: eval(Lista[i]*Y^i) F_x.append(G_x) return F_x 如果

我需要构建一个多项式函数,比如a_0+a_1x+a_2x^2。。。我正在尝试完成整个插值过程。 我有这个:

def Create_F(Numero, Array):
    Y = lambda x: x
    Lista = list(Array)
    F_x = [] 
    for i in range(Numero):
      G_x = lambda x: eval(Lista[i]*Y^i)
      F_x.append(G_x)
    return F_x
如果我用这个,我不会得到任何帮助:

Number = 2
ma = np.array([[1, 1],
               [1, 2]])
ly = np.array([8, -3])

idk = Create_F(Number, ly)
print(idk)
我不知道如何评估,例如1。如果我能以更好的方式执行此操作,将非常有帮助,完整的代码如下:

import numpy as np

def Matrix_F(Num, Lx):
    Vec = np.zeros((Num, Num), dtype = float)
    Vec.T[1] = Lx
    ex = 0
    for i in range(Num):
        for j in range(Num):
            Vec[j][i]=Lx[j]**ex
        ex += 1
    return Vec

def Cramer_F(Ma, Ly):
    Lc, Det = np.array(Ly), np.linalg.det(Ma)
    col = len(Lc)
    Values = np.zeros(col)
    for i in range(col):
        org = Ma.copy()
        org.T[i]=Lc
        Di=np.linalg.det(org)
        Values[i] = Di/Det
    error = np.linalg.norm(np.dot(Ma, Values)-Lc)
    return Values, error
    

def Create_F(Numero, Array):
    Y = lambda x: x
    Lista = list(Array)
    F_x = [] 
    for i in range(Numero):
      G_x = lambda x: eval(Lista[i]*Y^i)
      F_x.append(G_x)
    return F_x


val = int(input('Ingrese la cantidad de valores de X y Y que posee: '))
x_val = []
y_val = []

print('Ingrese %s valores de cada variable:' %(val))

n = 1
for i in range(val):
    x = float(input('%s° Valor de x: '%(n)))
    y = float(input('%s° Valor de y: '%(n)))
    x_val.append(x)
    y_val.append(y)
    n += 1

#Matriz del sistema:
As = Matrix_F(val, x_val)

#Valores de "a_n" y error
a_val, er = Cramer_F(As, y_val)

n=0
print()
for i in a_val:
    print('a_%s = %.6f' %(n, i))
    n += 1

谢谢你抽出时间

如果我想起来了,你想创建一个多项式表示为lambda函数。因此,让我建议替代功能:

import numpy as np
def alternative_create_F(coeffs):
    Y = lambda x: sum([item*(x**iter) for iter, item in enumerate(coeffs)])
    return Y

coeffs = np.array([8, -3, 4]) # first is the free coeff second is x coeff and so on

idk = alternative_create_F(coeffs)
print(idk(3))
print(idk(6))
请注意,
number
变量是不相关的,因为您可以从
len(coefs)
中提取它

现在lambda函数保持多项式的表示形式-

coeffs[0] + coeffs[1]*x + coeffs[2]*x^2
要调用lambda函数,请将其作为具有所需x值的函数调用。 从我的示例中收到的输出:

35 ===> 8+(-3)*3+4*3^2 = 8-9+36 = 35 
134 ===> 8+(-3)*6+4*6^2 = 8-18+144 = 134

希望您觉得它有用

如果我突然想到,您想创建一个多项式表示为lambda函数。因此,让我建议替代功能:

import numpy as np
def alternative_create_F(coeffs):
    Y = lambda x: sum([item*(x**iter) for iter, item in enumerate(coeffs)])
    return Y

coeffs = np.array([8, -3, 4]) # first is the free coeff second is x coeff and so on

idk = alternative_create_F(coeffs)
print(idk(3))
print(idk(6))
请注意,
number
变量是不相关的,因为您可以从
len(coefs)
中提取它

现在lambda函数保持多项式的表示形式-

coeffs[0] + coeffs[1]*x + coeffs[2]*x^2
要调用lambda函数,请将其作为具有所需x值的函数调用。 从我的示例中收到的输出:

35 ===> 8+(-3)*3+4*3^2 = 8-9+36 = 35 
134 ===> 8+(-3)*6+4*6^2 = 8-18+144 = 134
希望你觉得它有用

这个语句
eval(Lista[i]*Y^i)
很奇怪。首先,通过lambda函数将列表项多路复用。这没有意义。其次,您正在对结果进行
eval
。但是eval用于评估源代码,通常是字符串。一步一步地重写你的表达式,确保一切按预期进行。语句
eval(Lista[i]*Y^i)
很奇怪。首先,通过lambda函数将列表项多路复用。这没有意义。其次,您正在对结果进行
eval
。但是eval用于评估源代码,通常是字符串。一步一步地重写你的表达,确保一切都按预期进行。