1

次のことを行うためのよりPythonicな方法はありますか?

total = 0
for index, value in enumerate(frequencies):
    total += value
    frequencies[index] = total
4

4 に答える 4

1

Python 2.x では、ジェネレーター関数を使用できます (これは新しいリストを返すことに注意してください)。

def accumulate(lis):
    total = 0
    for item in lis:
        total += item
        yield total


>>> list(accumulate(range(5)))
[0, 1, 3, 6, 10]

Python 3.x ではitertools.accumulate.

于 2013-10-02T12:11:58.963 に答える
0

これはインプレース バージョンであり、Python 2.x を使用している場合は、これがまさに探しているものです。

frequencies = [1, 2, 3]
for i in range(1, len(frequencies)): frequencies[i] += frequencies[i - 1]
print frequencies

出力

[1, 3, 6]
于 2013-10-02T13:01:36.807 に答える