trig trig - 1 year ago 107
Python Question

Python: TypeError: 'int' object is not iterable(Think Python 10.3)

I trying to solve Think Python exercise 10.3


Write a function that takes a list of numbers and returns the cumulative sum; that is, a new list where the ith element is the sum of the first
i + 1
elements from the original list. For example, the cumulative sum of
[1, 2, 3]
is
[1, 3, 6]
.


I get a
TypeError
with this code:

def culm_sum(num):
res= []
a = 0
for i in num:
a += i
res += a
return res


When I call
culm_sum([1, 2, 3])
I get

TypeError: 'int' object is not iterable


Thank you!

Answer Source

The code you are using to append to your list is incorrect:

res += a

Instead do

res.append(a)

What's wrong with res += a? Python expects a to be iterable and behind the scenes tries to do the equivalent of:

for item in a:
    res.append(a)

But since a is not iterable, so you get a TypeError.

Note I initially thought your error was in for i in num: because your variable was poorly named. It sounds like it's a single integer. Since it is a list of numbers at least make it plural (nums) so that readers of your code are not confused. (The reader you will usually be helping is future you.)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download