Processing math: 100%

2018年2月23日金曜日

リストの和のリストのアルゴリズム

A=[a1,a2,a3...]というリストあって,sn=ni=1aiとして,S=[s1,s2,s3,...]というリストを新たに作りたいとする.うっかりしているとリスト内包表記を使えば早かろうと思って

def ls_comp_sum(A):
    length = len(A)
    return [sum(A[:i]) for i in range(length)]

と書いてしまったりするが,forループを使って,

def for_sum(A):
    result = [arr[0]]
    length = len(arr)
    for i in range(1, length):
        result.append(result[-1] + arr[i])
    return result

としたほうがずっと早い(Dynamic Programmingというらしい).

0 件のコメント:

コメントを投稿