将列表中的元素添加到Python中相应列表中的条件上

将列表中的元素添加到Python中相应列表中的条件上,python,list,python-2.7,Python,List,Python 2.7,我有三张单子 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]的值是一个函数,而不是一个方法,但更大的问题是,crf[vr_-bi

我有三张单子

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]的值是一个函数,而不是一个方法,但更大的问题是,
crf[vr_-bin您得到了这个错误,因为
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'
>>> 
>x=[1,2]
>>>总和(x)
3.
>>>x.sum()#错误
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“list”对象没有属性“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)
ind=[i代表范围内的i(len(vr_-bin)),如果vr_-bin[i]>>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代表范围内的i(len(vr_-bin)),如果vr_-bin[i]>>四舍五入(sum(crf[i]代表范围内的i(max(ind)+1)),3)
0.933
>>> 

你的意思是说
vr[0]
而不是
vr[1]
(而“
vr\u bin[4]
5
”而不是“
vr[4]
”)?您想要的输出是什么?您有可用的
numpy
吗?看起来您试图利用numpy数组所具有但Python列表所缺乏的索引行为和方法。@DSM如果我的数组是numpy数组,我的语法会起作用吗?@RSJohn:不太好。我想它会像`(crf*(vr_bin我想你的射程限制偏离了1。感谢@ToClickorNottoClick对我的问题进行的研究以及你对我错误的正确解释。你的两个答案都对我有用。
>>> 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
>>>