我有三份名单
vr=[5, 10, 15, 20, 25]
vr_bin = [1,2,3,4,5,6,7,8,9,10]
crf= [0.0357, 0.7124, 0.1707, 0.0142, 0.0328, 0.0291, 0.0244, 0.0206, 0.0334, 1.7124]其中vr_bin和crf的长度相同。我必须取vr的第一个值(例如5),并将其与vr_bin ( i、vr_bin[i] <= vr[0]的值)进行比较,然后将crf之和到crf[i]。
在我们的示例中,vr_bin[4]将满足我们的条件(因为vr_bin[4]是5,vr[0]是5)。所以我想计算一下crf[0]+crf[1]+crf[2]+crf[3]+crf[4]。我尝试使用以下代码
total_crf = crf[vr_bin <= vr].sum()但是我得到了下面的错误,AttributeError: 'float' object has no attribute 'sum',请建议解决这个问题的方法。谢谢你
发布于 2014-06-16 17:28:47
发布于 2014-06-16 17:33:48
因为sum()是一个函数,而不是一个方法,所以您会得到这个错误:
>>> x = [1, 2]
>>> sum(x)
3
>>> x.sum() #Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'sum'
>>> 下面是工作的代码:
ind = [i for i in range(len(vr_bin)) if vr_bin[i] <= vr[0]]
round(sum(crf[i] for i in range(max(ind)+1)), 3)它的运作方式是:
>>> vr=[5, 10, 15, 20, 25]
>>> vr_bin = [1,2,3,4,5,6,7,8,9,10]
>>> crf= [0.0357, 0.7124, 0.1707, 0.0142, 0.0328, 0.0291, 0.0244, 0.0206, 0.0334, 1.7124]
>>> ind = [i for i in range(len(vr_bin)) if vr_bin[i] <= vr[0]]
>>> round(sum(crf[i] for i in range(max(ind)+1)), 3)
0.933
>>> https://stackoverflow.com/questions/24248942
复制相似问题