Pythonで逆順の累積和を計算する方法


以下に、いくつかの方法とコード例を示します。

方法1: ループを使用する方法

def reverse_accumulating_sum(lst):
    result = []
    total = 0
    for i in reversed(lst):
        total += i
        result.append(total)
    return result
# 使用例
numbers = [1, 2, 3, 4, 5]
result = reverse_accumulating_sum(numbers)
print(result)  # [15, 14, 12, 9, 5]

方法2: 内包表記を使用する方法

def reverse_accumulating_sum(lst):
    total = 0
    return [total := total + i for i in reversed(lst)][::-1]
# 使用例
numbers = [1, 2, 3, 4, 5]
result = reverse_accumulating_sum(numbers)
print(result)  # [15, 14, 12, 9, 5]

方法3: numpyを使用する方法

import numpy as np
def reverse_accumulating_sum(lst):
    arr = np.array(lst)
    return np.cumsum(arr[::-1])[::-1].tolist()
# 使用例
numbers = [1, 2, 3, 4, 5]
result = reverse_accumulating_sum(numbers)
print(result)  # [15, 14, 12, 9, 5]

これらは、Pythonで逆順の累積和を計算するためのいくつかの一般的な方法です。ご参考までにお使いください。