Summing elements in a list
Here is my code, I need to sum an undefined number of elements in the list. How to do this?
l = raw_input() l = l.split(' ') l.pop(0)
3 5 4 9
After input I delete first element via
.split(' ') my list is
['5', '4', '9'] and I need to sum all elements in this list.
In this case the sum is 18. Please notice that number of elements is not defined.
You can sum numbers in a list simply with the sum() built-in:
It will sum as many number items as you have. Example:
my_list = range(10, 17) my_list [10, 11, 12, 13, 14, 15, 16] sum(my_list) 91
For your specific case:
For your data convert the numbers into
int first and then sum the numbers:
data = ['5', '4', '9'] sum(int(i) for i in data) 18
This will work for undefined number of elements in your list (as long as they are "numbers")
Thanks for @senderle's comment re conversion in case the data is in string format.
Read more... Read less...
>>> l = raw_input() 1 2 3 4 5 6 7 8 9 10 >>> l = l.split() >>> l.pop(0) '1' >>> sum(map(int, l)) #or simply sum(int(x) for x in l) , you've to convert the elements to integer first, before applying sum() 54
You can also use reduce method:
>>> myList = [3, 5, 4, 9] >>> myTotal = reduce(lambda x,y: x+y, myList) >>> myTotal 21
Furthermore, you can modify the lambda function to do other operations on your list.
You can use
sum to sum the elements of a list, however if your list is coming from
raw_input, you probably want to convert the items to
l = raw_input().split(' ') sum(map(int, l))
You can use
map function and pythons inbuilt
sum() function. It simplifies the solution. And reduces the complexity.