0

This is my code. I want add the total of the list cost, so the code will return £140, but it is not working. I want the £ sign to be in front of the sum of the cost so the user will know what the program is displaying.

cost = [['Lounge', 70], ['Kitchen', 70]]
print(cost)
print("£", sum(cost))

It returns this error message:

TypeError: unsupported operand type(s) for +: 'int' and 'list'

I have looked online, but none of these results have helped me:

sum a list of numbers in Python

How do I add together integers in a list in python?

http://interactivepython.org/runestone/static/pythonds/Recursion/pythondsCalculatingtheSumofaListofNumbers.html

Sum the second value of each tuple in a list

Community
  • 1
  • 1
User0123456789
  • 754
  • 2
  • 10
  • 25

3 Answers3

2

Do this:

print("£", sum(c[1] for c in cost))
zondo
  • 19,040
  • 7
  • 42
  • 82
  • Thanks, it worked :) But can you explain it through so that I understand how it works? – User0123456789 Feb 12 '16 at 18:59
  • It is a shortcut for `lis = [] for c in cost: lis.append(c[1]) print("£", sum(lis))`. [Here](https://wiki.python.org/moin/Generators) is more information about generators. – zondo Feb 12 '16 at 19:55
2

Each element in cost is a two-element tuple. You'd have to extract the numeric one, e.g., by using a list comprehension:

print("£" + str(sum(i[1] for i in cost)))
Mureinik
  • 277,661
  • 50
  • 283
  • 320
1

Functional solution:

from operator import itemgetter

print("£", sum(map(itemgetter(1), cost)))
Jared Goguen
  • 8,523
  • 2
  • 14
  • 35