0

我有由两列组成的数据文件,第一列的值范围从 -360 到 720,第二列由这些值组成。

我正在尝试编写一个python代码,以便对于第一列的给定值,它应该取它的相应值并将第二列的30以上到30以下的值相加。例如,数据文件由

.......
.......
-40 2.2
.......
.......
0   1.14
........
........
60  5.12
........

如果给出 20 的值,那么它应该添加从 -10 到 50 的第二列的值,即第二列的范围应该是 (20-30,20+30) 我已经尝试将每一行作为列表在其他列表中,但它不起作用。

有没有更简单的方法来做到这一点?

提前致谢

4

1 回答 1

0

正如许多评论员所注意到的那样,您的描述并不清晰。

我会使用字典,第一列作为键,第二列作为值。然后对于给定的键 ( starting point),我会将该字典中的值与给定范围 ( diff).

VALUES = {-4: 0.1, -3: 0.2, -2: 0.3, -1: 0.4,
    0: 0.5, 1: 0.6, 2: 0.7, 3:  0.8, 4: 0.9}

def sum_part(start_point, diff):
    sum = 0.0
    for i in range(start_point - diff, start_point + diff + 1):
        try:
            sum += VALUES[i]
        except KeyError:
            pass
        #print('%d: %.2f' % (i, sum))
    return sum

def test_sum(start_point, diff):
    sum = sum_part(start_point, diff)
    print('sum(%d, %d): %.2f' % (start_point, diff, sum))

test_sum(1, 3)

假设:不存在的键被计为 0。取消注释print()以查看键和总和是否正确。如果您只想对现有键求和,则必须从两个方向的起点开始求和,直到diff对每一侧的值求和。正如 wooble 评论的那样,向我们展示您的代码。

于 2012-06-19T12:39:43.990 回答