0

2つの列で構成されるデータファイルがあります。最初の列の値の範囲は-360〜720で、2番目の列はこれらの値で構成されています。

最初の列の特定の値に対して、対応する値を取得し、2番目の列の値が30より上から30より下になるようにPythonコードを記述しようとしています。たとえば、データファイルは次のように構成されます。

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

20の値を指定すると、-10から50までの2番目の列の値が追加されます。つまり、2番目の列の範囲は(20-30,20 + 30)になります。各行をリストとして試してみました。他のリストにありますが、機能していません。

これを行うためのより簡単な方法はありますか?

前もって感謝します

4

1 に答える 1

0

多くのコメンテーターが気づいたように、あなたの説明は明確ではありません。

1列目がキー、2列目が値の辞書を使用します。次に、指定されたキー(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 に答える