Python 输出是数字列表,而不是一个数字
我遇到了这个问题,我对Python的这种用法是新手,希望有人能在这个问题上帮助我。 我有一个使用RungeKutta算法的代码。 与我打印(vH)时一样,它打印:Python 输出是数字列表,而不是一个数字,python,arrays,arraylist,output,runge-kutta,Python,Arrays,Arraylist,Output,Runge Kutta,我遇到了这个问题,我对Python的这种用法是新手,希望有人能在这个问题上帮助我。 我有一个使用RungeKutta算法的代码。 与我打印(vH)时一样,它打印: [70, 98.72259439054349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
[70, 98.72259439054349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
当我写print(vH)
时,我怎么能将98.72259439054349
输入输出?
这是代码的RungeKutta部分,并且nrk=300
。使用nrk
我们得到了精确的输出,但正如您所见,使用此代码,我们的输出中有300
零
def rk4(dH_func, H0, A, B, alpha, b, rho_de0, rho_dm0, z0, z1, nrk):
if dH_func != False and drho_dm_func != False and drho_de_func != False :
vH = [0] * (nrk + 1)
h = (z1 - z0) / float(nrk)
vH[0] = H = H0
for i in range(1, nrk + 1):
k1_H = h * dH_func(z, H, rho_de, rho_dm)
k2_H = h * dH_func(z + 0.5 * h, H + 0.5 * k1_H, rho_de + 0.5 * k1_rho_de, rho_dm + 0.5 * k1_rho_dm)
k3_H = h * dH_func(z + 0.5 * h, H + 0.5 * k2_H, rho_de + 0.5 * k2_rho_de, rho_dm + 0.5 * k2_rho_dm)
k4_H = h * dH_func(z + h, H + k3_H, rho_de + k2_rho_de, rho_dm + k2_rho_dm)
vH[i] = H = H + (k1_H + k2_H + k2_H + k3_H + k3_H + k4_H) / 6
return vH
在函数中,您可以编写:
for i in range(1, nrk + 1):
# ...
return vH
这意味着在第一次迭代结束时,您会立即返回结果
如果希望函数在所有迭代完成后返回结果,则应将return vH
写入for
循环的主体之外,如:
for i in range(1, nrk + 1):
# ...
return vH
如果只想打印第二个项目,则应使用以下选项打印:
print(vH[1])
print(vH[1])
print(vH[1])
就像您在for
循环中返回。@WillemVanOnsem一旦我想将返回
从循环中带出来,Python就不会这样做了accept@Ehsan:你有什么错误?也许您混合了制表符和空格,因为这是完全有效的。[70,98.72259439054349,144.72020358361797,215.66663177218655269.9988586813829,269.9988586813829,269.9988586813829,…
result@Ehsan:如果您只需要第二个元素,您应该像打印(vH[1])一样打印它
。它可以在其他计算中自动用作正则数?我的意思是`ans=vH[1]`并且我在接下来的所有计算中都使用ans
。@Ehsan:是的,您获得了第二个元素,并且可以将其视为独立的元素(它是独立的:)最后一个问题,正如我刚才所说的,将返回带出循环,为什么输出发生了变化?7098.72259439054349144.720203583617971215.66663177218655269.9988586813829