Python Forum
how to add the numbers of a list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
how to add the numbers of a list
#1
I have a list. Each element is either 1 or 0. I want to add them sequentially.

For example:

I have: attendance = [1, 1, 1, 1]

I declare: cumulativeAttendance = [0] to start with, otherwise I get index errors.

cumulativeAttendance[1] is cumulativeAttendance[0] + attendance[0]
then cumulativeAttendance[1] = cumulativeAttendance[0] + attendance[1]

cumulativeAttendance = [0, 1, 2, 3, 4]

each element of is cumulativeAttendance.append(num2) and num2 is attendance[i] + cumulativeAttendance = [i]

I did this like this, but I think there must be a better way. Why reinvent the wheel?

attnAdded = [0]
    for i in range(0, len(studiAttAll)):
          num1 = studiAttAll[i]
          #print('num1 is ' + str(num1))
          num2 = studiAttAll[i] + attnAdded[i]
          #print('num2 is ' + str(num2))
          attnAdded.append(num2)
    del attnAdded[0]
Is there already a python module to do this? Add the members of a list and write them to a new list such that:
newlist[0] = 0
newlist[1] = newlist[0] + oldlist[1]
newlist[2] = newlist[1] + oldlist[2]
newlist[3] = newlist[2] + oldlist[3]

I have strained my tiny brain this afternoon, any tips greatly appreciated!
Reply
#2
def calc_cumulative_attendance(attendance):
    cumulative_attendance = [attendance[0]]

    for item in attendance[1:]:
        cumulative_attendance.append(item + cumulative_attendance[-1])
    
    return cumulative_attendance
    
print(calc_cumulative_attendance([1, 1, 1, 1]))
print(calc_cumulative_attendance([0, 1, 0, 1]))
Output:
[1, 2, 3, 4] [0, 1, 1, 2]
Reply
#3
(Apr-07-2019, 11:19 AM)Pedroski55 Wrote: Is there already a python module to do this?

There is built-in module itertools and in there is function accumulate which can be used (in documentation there is also rough code how it is implemented).

>>> from itertools import accumulate
>>> list(accumulate([1, 1, 1, 1]))
[1, 2, 3, 4]
>>> list(accumulate([0, 1, 0, 1]))
[0, 1, 1, 2]
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How do I calculate a ratio from 2 numbers and return an equivalent list of about 1000 Pleiades 8 15,441 Jan-05-2024, 08:30 PM
Last Post: sgrey
  find random numbers that are = to the first 2 number of a list. Frankduc 23 3,013 Apr-05-2023, 07:36 PM
Last Post: Frankduc
  List of random numbers astral_travel 17 2,533 Dec-02-2022, 10:37 PM
Last Post: deanhystad
  Remove numbers from a list menator01 4 1,251 Nov-13-2022, 01:27 AM
Last Post: menator01
  [split] why can't i create a list of numbers (ints) with random.randrange() astral_travel 7 1,430 Oct-23-2022, 11:13 PM
Last Post: Pedroski55
  Divide a number by numbers in a list. Wallen 7 7,926 Feb-12-2022, 01:51 PM
Last Post: deanhystad
  producing numbers out of a list bouraque7878 10 3,623 Nov-12-2021, 09:13 PM
Last Post: jefsummers
  How to change odd to even numbers in the list? plumberpy 8 3,620 Aug-08-2021, 11:07 AM
Last Post: plumberpy
  convert numbers into list lokesh 1 2,348 Jun-03-2021, 06:37 AM
Last Post: menator01
  adding numbers in a list Nickd12 2 2,150 Jan-15-2021, 12:46 PM
Last Post: Serafim

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020