在给定列表上应用给定的数学表达式
Applying a given mathematical expression on given lists
我正在开发一个 python 程序,它应该接收两个列表 (x,y) 和一些函数(在 x,y 中),然后 return 每个列表包含列表中每个元素的输出的函数,所以这就是我尝试的:
from sympy import *
from sympy.abc import x, y
#Entering the functions
SympF=[]
F=[]
n = int(input("Please enter the number of terms in the general regression formula : "))
for i in range(0, n):
SympF.append(sympify(input("Insert your functions : \n")))
F.append (lambdify([x, y], SympF[i]))
#Entering Points
xdata = []
ydata = []
m = int(input("Enter number of elements : "))
print('Enter each point as space seperated x & y')
for i in range(0, m):
x,y = map(float, input().split())
xdata.append(x)
ydata.append(y)
#making a list for each function (this is where I'm stuck)
Z=[]
for i in range(0, n):
for j in range (0,m):
Z.append(F[i](xdata[j],ydata[j]))
for item in F:
print(F);
这段代码应该做的是给我一个列表 Z,其中包含 F[i]、F[i+1]、F[i+2]... 的输出,但我得到的是错误:
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
所以我错过了什么,还有比使用单个列表 Z 然后拆分它更好的方法吗(返回包含 for 循环输出的 n 个列表)?
我看过你的代码。我建议您开始使用调试器,以便您了解脚本中发生的事情 :) 您完全打印了错误的列表。
我为你评论了一些台词。希望能帮到你..
import sympy # don't import everything(*)!!
from sympy.abc import x, y
# Entering the functions
SympF = []
F = []
n = int(input("Please enter the number of terms in the general regression formula : "))
for i in range(0, n):
SympF.append(sympy.sympify(input("Insert your functions : \n")))
F.append(sympy.lambdify([x, y], SympF[i]))
# Entering Points
xdata = []
ydata = []
m = int(input("Enter number of elements : "))
print("Enter each point as space seperated x & y")
for i in range(0, m):
x, y = map(float, input().split())
xdata.append(x)
ydata.append(y)
Z = [] # Set up a list
for i in range(0, n):
my_list = [] # for every function initialize a temporary list as empty
for j in range(0, m): # Calculate the results
my_list.append(F[i](xdata[j], ydata[j]))
Z.append(my_list) # Add the list to your result
for item in Z:
print(item)
我正在开发一个 python 程序,它应该接收两个列表 (x,y) 和一些函数(在 x,y 中),然后 return 每个列表包含列表中每个元素的输出的函数,所以这就是我尝试的:
from sympy import *
from sympy.abc import x, y
#Entering the functions
SympF=[]
F=[]
n = int(input("Please enter the number of terms in the general regression formula : "))
for i in range(0, n):
SympF.append(sympify(input("Insert your functions : \n")))
F.append (lambdify([x, y], SympF[i]))
#Entering Points
xdata = []
ydata = []
m = int(input("Enter number of elements : "))
print('Enter each point as space seperated x & y')
for i in range(0, m):
x,y = map(float, input().split())
xdata.append(x)
ydata.append(y)
#making a list for each function (this is where I'm stuck)
Z=[]
for i in range(0, n):
for j in range (0,m):
Z.append(F[i](xdata[j],ydata[j]))
for item in F:
print(F);
这段代码应该做的是给我一个列表 Z,其中包含 F[i]、F[i+1]、F[i+2]... 的输出,但我得到的是错误:
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
所以我错过了什么,还有比使用单个列表 Z 然后拆分它更好的方法吗(返回包含 for 循环输出的 n 个列表)?
我看过你的代码。我建议您开始使用调试器,以便您了解脚本中发生的事情 :) 您完全打印了错误的列表。 我为你评论了一些台词。希望能帮到你..
import sympy # don't import everything(*)!!
from sympy.abc import x, y
# Entering the functions
SympF = []
F = []
n = int(input("Please enter the number of terms in the general regression formula : "))
for i in range(0, n):
SympF.append(sympy.sympify(input("Insert your functions : \n")))
F.append(sympy.lambdify([x, y], SympF[i]))
# Entering Points
xdata = []
ydata = []
m = int(input("Enter number of elements : "))
print("Enter each point as space seperated x & y")
for i in range(0, m):
x, y = map(float, input().split())
xdata.append(x)
ydata.append(y)
Z = [] # Set up a list
for i in range(0, n):
my_list = [] # for every function initialize a temporary list as empty
for j in range(0, m): # Calculate the results
my_list.append(F[i](xdata[j], ydata[j]))
Z.append(my_list) # Add the list to your result
for item in Z:
print(item)