我正在研究一个python程序,该程序应该接收两个列表(x,y)和多个函数(以x,y为单位),然后为每个函数返回一个列表,其中包含了每个元素的输出。列表,所以这是我尝试过的:
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然后拆分它更好的方法呢?(返回n个列表,其中包含来自for循环的输出)?
我看过你的代码。我建议您开始使用调试器,以便您了解脚本中正在发生的事情:)您总共打印了错误的列表。我为您评论了几行。希望我能帮忙..
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)