Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如果元组列表中对应的第一个元素在特定范围内,则添加元组列表的值_List_Numpy_Sum_Tuples_Conditional Statements - Fatal编程技术网

List 如果元组列表中对应的第一个元素在特定范围内,则添加元组列表的值

List 如果元组列表中对应的第一个元素在特定范围内,则添加元组列表的值,list,numpy,sum,tuples,conditional-statements,List,Numpy,Sum,Tuples,Conditional Statements,下面是我的元组列表: list=[(8.0056, 1.0), (8.0269, 0.6666666666666666), (8.0302, 1.0), (8.0426, 0.3333333333333333), (8.0492, 1.0), (8.0766, 0.6666666666666666), (8.0817, 0.3333333333333333), (8.1297, 1.0), (8.137, 0.3333333333333333), (8.1778, 1.0), (8.1858,

下面是我的元组列表:

list=[(8.0056, 1.0), (8.0269, 0.6666666666666666), (8.0302, 1.0), (8.0426, 0.3333333333333333), (8.0492, 1.0), (8.0766, 0.6666666666666666), (8.0817, 0.3333333333333333), (8.1297, 1.0), (8.137, 0.3333333333333333), (8.1778, 1.0), (8.1858, 1.0), (8.1948, 1.0), (8.2044, 0.3333333333333333), (8.2143, 0.3333333333333333), (8.3222, 0.3333333333333333), (8.3314, 0.3333333333333333), (8.3627, 0.3333333333333333), (8.3818, 0.3333333333333333), (8.436, 1.0), (8.4816, 0.6666666666666666), (8.4891, 1.0), (8.4932, 0.3333333333333333), (8.5348, 0.3333333333333333), (8.5924, 0.3333333333333333), (8.6229, 0.3333333333333333), (8.6698, 0.6666666666666666), (8.6826, 0.3333333333333333), (8.7485, 0.3333333333333333), (8.782, 1.0), (8.8158, 0.3333333333333333), (8.8382, 0.3333333333333333), (8.8708, 0.3333333333333333), (8.8737, 0.3333333333333333), (8.882, 0.3333333333333333), (9.1274, 1.0), (9.3071, 1.0), (9.3373, 1.0), (9.3564, 1.0), (9.367, 0.3333333333333333), (9.4711, 1.0), (9.5184, 1.0), (9.6954, 1.0), (9.7214, 0.3333333333333333), (9.743, 1.0), (9.8061, 0.3333333333333333), (9.9565, 0.6666666666666666), (10.0249, 0.3333333333333333), (10.0734, 0.6666666666666666), (10.0917, 0.6666666666666666), (10.2095, 1.0), (10.2967, 1.0), (10.3707, 1.0), (10.8679, 1.0), (10.9173, 1.0), (8.0022, 0.3333333333333333), (8.0504, 0.3333333333333333), (8.0527, 0.3333333333333333), (8.0645, 0.3333333333333333), (8.1836, 0.6666666666666666), (8.2122, 0.6666666666666666), (8.2433, 0.6666666666666666), (8.2849, 0.3333333333333333), (8.396, 0.3333333333333333), (8.64, 0.3333333333333333), (8.6793, 0.3333333333333333), (8.8079, 0.3333333333333333), (8.8313, 0.3333333333333333), (8.8396, 0.3333333333333333), (8.8666, 0.3333333333333333), (9.0763, 0.6666666666666666), (9.2683, 0.3333333333333333), (9.7969, 0.6666666666666666), (9.8302, 0.6666666666666666), (10.0856, 0.3333333333333333), (10.2049, 0.6666666666666666), (10.7051, 0.6666666666666666), (8.0082, 0.3333333333333333), (8.0245, 0.3333333333333333), (8.1414, 0.3333333333333333), (8.1661, 0.3333333333333333), (8.2014, 0.3333333333333333), (8.2794, 0.3333333333333333), (8.3103, 0.3333333333333333), (8.4627, 0.3333333333333333), (8.5279, 0.3333333333333333), (8.5326, 0.3333333333333333), (8.5507, 0.3333333333333333), (9.4476, 0.3333333333333333)]
如果我们将这些元素命名为(x,y),我想添加x在特定范围内的所有y。这意味着,例如,对于x在(8.0,8.4)范围内,求和应得到17.666

*如果发现有多种方法可供选择,则可接受最短格式(如一行)的答案。


以下是我的最佳尝试:

dm=0.4
item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11 = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
for item in list:
    if (8. +  0*dm <= item[0] <= 8. +  1*dm):
        item1 += item[1]
    elif (8. +  1*dm <= item[0] <= 8. +  2*dm):
        item2 += item[1]
    elif (8. +  2*dm <= item[0] <= 8. +  3*dm):
        item3 += item[1]
    elif (8. +  3*dm <= item[0] <= 8. +  4*dm):
        item4 += item[1]
    elif (8. +  4*dm <= item[0] <= 8. +  5*dm):
        item5 += item[1]
    elif (8. +  5*dm <= item[0] <= 8. +  6*dm):
        item6 += item[1]
    elif (8. +  6*dm <= item[0] <= 8. +  7*dm):
        item7 += item[1]
    elif (8. +  7*dm <= item[0] <= 8. +  8*dm):
        item8 += item[1]
    elif (8. +  8*dm <= item[0] <= 8. +  9*dm):
        item9 += item[1]
    elif (8. +  9*dm <= item[0] <= 8. +  10*dm):
        item10 += item[1]
    elif (8. +  10*dm <= item[0] <= 8. +  11*dm):
        item11 += item[1]

y_values = [item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11]

print(y_values)

一条线很难,但两条线是可行的

>>> label, data = np.array(the_list).T
>>> np.bincount((8 + 0.4 * np.arange(12)).searchsorted(label), data, 12)
array([ 0.        , 17.66666667,  8.33333333,  4.66666667,  6.        ,
        4.66666667,  5.66666667,  0.66666667,  2.        ,  0.        ,
        0.        ,  0.        ])

一条线很难,但两条线是可行的

>>> label, data = np.array(the_list).T
>>> np.bincount((8 + 0.4 * np.arange(12)).searchsorted(label), data, 12)
array([ 0.        , 17.66666667,  8.33333333,  4.66666667,  6.        ,
        4.66666667,  5.66666667,  0.66666667,  2.        ,  0.        ,
        0.        ,  0.        ])