Python 输出是数字列表,而不是一个数字

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,

我遇到了这个问题,我对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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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