python 报错'float' object has no attribute '__getitem__' 请问是什么问题 怎么修改

如题,我的程序中的一段是这样的:h=0fori,xinenumerate(c):forj,yinenumerate(cvar):g=finalresult[h]*1Z[i... 如题,我的程序中的一段是这样的:
h=0
for i, x in enumerate(c):
for j, y in enumerate(cvar):
g=finalresult[h]*1
Z[i][j] = g #/1e6
h+=1
这个: Z[i][j] = g地方总是报错'float' object has no attribute '__getitem__' 。 finalresult的数据类型是python原有的那种。numpy.float64
本来的问题是:c和cvar是并不等长的变量finalresult是如下得来,相当于,每个c和cvar排列组合得来的。想用c和cvar做x和y的坐标轴,画出3d finalresult的曲面。但是由于c和cvar不是等长,遇到了一些问题。
finalresult=[]
for i in range(0,9,+1):
for j in range(0,25,+1):
alphaValue = c[i]*(c[i]*(1-c[i])/cvar[j]-1)
betaValue = (1-c[i])*(c[i]*(1-c[i])/cvar[j]-1)
print c[i], cvar[j]
print alphaValue, betaValue
Sl_s=0

for k in range(1,51,+1):
betaPrimitive=[]
denominator=special.beta(alphaValue,betaValue)*alphaValue
for l in range(0,51,+1):
r=hyp2f1(alphaValue, 1-betaValue, 1+alphaValue, f_[l])*f_[l]**alphaValue/denominator
r_f=float(r)
betaPrimitive.append(r_f)

result = (betaPrimitive[k-1]*Phi_[k-1]+betaPrimitive[k]*Phi_[k])*0.5*(f_[k-1]-f_[k])
Sl_s += result
#print Sl_s

result_1 = (Sl_[0]-Sl_s)
#Alternativ: result_1 = Sl_[0]+np.trapz(betaPrimitive*Phi_,f_)
finalresult.append(result_1)
展开
 我来答
heptnaol
推荐于2016-10-31 · TA获得超过7261个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1805万
展开全部
应该是误将float当作list或者tuple来操作了
对于list或者元组,[]操作是访问下标所在的元素,也就是__getitem__方法。
由于python定义变量的时候并不说明类型,类型都在运行时确定,因此有出现类型错误的可能性。
至于具体怎么修改,无法从你的问题中得出结论,你可以看出错的调用堆栈,都有对应的文件和行号的。
sordking
2014-12-16 · TA获得超过551个赞
知道小有建树答主
回答量:161
采纳率:100%
帮助的人:191万
展开全部
同上,你代码里z[i] 或z 是个浮点数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-06-01
展开全部
我觉得应该是Z是float,无getitem属性。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式