TypeError:不支持的操作数类型为/:'float'和'list',无法解析
问题描述:
我试图在python中生成一个图来确定行星的速度,V = sqrt(GM/r)。我的做法是这样的:用“R”的最大和最小的值已经被赋予TypeError:不支持的操作数类型为/:'float'和'list',无法解析
r = range (57909227, 5906440628, 10000000)
:
我可以“R”产生几百点。 G和M的值也被给出。我的代码看起来是这样的:
import sys
import os
import numpy
import matplotlib.pyplot as plt
from pylab import *
G=6.67*10**(-11)
M=2.0*10**30
radial_distance = range (57909227, 5906440629, 10000000)
for distance in radial_distance:
plt.plot(radial_distance, ((G*M)/distance)**0.5, '*')
plt.show()
返回我下面的错误:
File "generate_list.py", line 20, in <module>
plt.plot(radial_distance, ((G*M)/distance)**0.5, '*')
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3154, in plot
ret = ax.plot(*args, **kwargs)
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py", line 1812, in inner
return func(ax, *args, **kwargs)
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 1424, in plot
for line in self._get_lines(*args, **kwargs):
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 364, in _plot_args
x, y = self._xy_from_xy(x, y)
File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy
raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
请帮我修正这个错误。
答
您需要的是在列表中将元素表达式应用于表达式,然后将结果列表传递给plot。
y = [((G*M)/x)**0.5 for x in radial_distance]
plt.plot(radial_distance, y)
'range'返回一个值列表。您不能通过列表 – Li357
将范围(1,100,10)划分为列表[1,11,21,31,41,51,61,71,81,91]。你不能划分一个浮点数和一个列表。你究竟在做什么? –
我必须生成几百个距离值,然后使用这些值来绘制V的函数,那么生成r值然后在函数中使用的最有效方法是什么? – bhjghjh