eng3 = [solve(eng==(k-1)*md*Vm^2/(2*Patm*Vc*(Pc-Pc^(1/k))),Vc,solution_dict=1) for Pc in xrange(2,10)]
我正在尝试自动化圣人数学中一些效率图的过程,我已经得到了这个公式。 Matplotlib.pyplot
想要一个值列表。我要么在下面描述的列表中获得字典,要么以下列形式获得列表:
List:
[[Vc == (5231100000/35166511904977)], [Vc == (111907000000/1692075843832947)], [Vc == (364112000000/8911538005781703)], [Vc == (753818000000/25992803547821049)], [Vc == (138358000000/6222694018119437)], [Vc == (659020000/36808310575981)], [Vc == (25902500000/1736640592770261)], [Vc == (59144000000/4642920082445667)]]
Dictionary:
[[{Vc: 1743700000/105499535714931}], [{Vc: 319775000/43516062236099}], [{Vc: 34670000000/7636845816518169}], [{Vc: 41083500000/12749600170083701}], [{Vc: 1703720000/689628024927753}], [{Vc: 25247000000/12691109152994019}], [{Vc: 44767000000/27012747987604137}], [{Vc: 5993300000/4234372317920577}]]
我想获取这些分数,将它们转换为数值近似值,并在sage math [python]中创建一个包含这些值的列表。 n()
函数会将分数转换为小数,但我不确定如何隔离这些值以将其提供给n()
。
答案 0 :(得分:1)
该列表来自solve
,但问题实际上是一个纯粹的Python问题。要获得其中的每一项,如果列表名为Vlist
,则可以执行
[v[0].rhs().n() for v in Vlist]
并且对于字典来说有点麻烦
[v[0].values()[0].n() for v in Vlist]
这种结构被称为“列表理解”。这些假设你真的有单一的解决方案!如果格式不同(例如,如果你得到类似Vc == 2*Vc^2
的内容),那么你必须更加聪明。
背景 - 显然this ask.sagemath.org question是相关的。