# cumulative_sum.py
# MIT OCW 6.189 A Gentle Introduction to Programming Using Python
# Homework 2 > Exercise 2.7 Working With Lists > cumulative_sum
# Glenn Richard
# July 5, 2013
def cumulative_sum(number_list):
# number_list is a list of numbers
c_sum = 0
c_sum_list = []
for number in number_list:
c_sum += number
c_sum_list.append(c_sum)
return c_sum_list
def cumulative_sum_list_comp(number_list):
# number_list is a list of numbers
return [sum(number_list[:i + 1]) for i in range(len(number_list))]
# Test Cases
print "cumulative_sum([1, 2, 3, 4]) is:", cumulative_sum([1, 2, 3, 4])
print "cumulative_sum_list_comp([1, 2, 3, 4]) is:", cumulative_sum_list_comp([1, 2, 3, 4])
print "cumulative_sum([1, 1, 2, 3, 5, 8]) is:",cumulative_sum([1, 1, 2, 3, 5, 8])
print "cumulative_sum_list_comp([1, 1, 2, 3, 5, 8]) is:",cumulative_sum_list_comp([1, 1, 2, 3, 5, 8])
IyBjdW11bGF0aXZlX3N1bS5weQojIE1JVCBPQ1cgNi4xODkgQSBHZW50bGUgSW50cm9kdWN0aW9uIHRvIFByb2dyYW1taW5nIFVzaW5nIFB5dGhvbgojIEhvbWV3b3JrIDIgPiBFeGVyY2lzZSAyLjcgV29ya2luZyBXaXRoIExpc3RzID4gY3VtdWxhdGl2ZV9zdW0KIyBHbGVubiBSaWNoYXJkCiMgSnVseSA1LCAyMDEzCgpkZWYgY3VtdWxhdGl2ZV9zdW0obnVtYmVyX2xpc3QpOgogICAgIyBudW1iZXJfbGlzdCBpcyBhIGxpc3Qgb2YgbnVtYmVycwogICAgY19zdW0gPSAwCiAgICBjX3N1bV9saXN0ID0gW10KICAgIGZvciBudW1iZXIgaW4gbnVtYmVyX2xpc3Q6CiAgICAgICAgY19zdW0gKz0gbnVtYmVyCiAgICAgICAgY19zdW1fbGlzdC5hcHBlbmQoY19zdW0pCiAgICByZXR1cm4gY19zdW1fbGlzdAoKZGVmIGN1bXVsYXRpdmVfc3VtX2xpc3RfY29tcChudW1iZXJfbGlzdCk6CiAgICAjIG51bWJlcl9saXN0IGlzIGEgbGlzdCBvZiBudW1iZXJzCiAgICByZXR1cm4gW3N1bShudW1iZXJfbGlzdFs6aSArIDFdKSBmb3IgaSBpbiByYW5nZShsZW4obnVtYmVyX2xpc3QpKV0KCiMgVGVzdCBDYXNlcwpwcmludCAiY3VtdWxhdGl2ZV9zdW0oWzEsIDIsIDMsIDRdKSBpczoiLCBjdW11bGF0aXZlX3N1bShbMSwgMiwgMywgNF0pCnByaW50ICJjdW11bGF0aXZlX3N1bV9saXN0X2NvbXAoWzEsIDIsIDMsIDRdKSBpczoiLCBjdW11bGF0aXZlX3N1bV9saXN0X2NvbXAoWzEsIDIsIDMsIDRdKQpwcmludCAiY3VtdWxhdGl2ZV9zdW0oWzEsIDEsIDIsIDMsIDUsIDhdKSBpczoiLGN1bXVsYXRpdmVfc3VtKFsxLCAxLCAyLCAzLCA1LCA4XSkKcHJpbnQgImN1bXVsYXRpdmVfc3VtX2xpc3RfY29tcChbMSwgMSwgMiwgMywgNSwgOF0pIGlzOiIsY3VtdWxhdGl2ZV9zdW1fbGlzdF9jb21wKFsxLCAxLCAyLCAzLCA1LCA4XSkK
cumulative_sum([1, 2, 3, 4]) is: [1, 3, 6, 10]
cumulative_sum_list_comp([1, 2, 3, 4]) is: [1, 3, 6, 10]
cumulative_sum([1, 1, 2, 3, 5, 8]) is: [1, 2, 4, 7, 12, 20]
cumulative_sum_list_comp([1, 1, 2, 3, 5, 8]) is: [1, 2, 4, 7, 12, 20]