Checking a number/element by a condition is a common problem one faces and is done in almost every program. Sometimes we also require to get the totals sum that match the particular condition to have a distinguish which to not match for further utilization. Lets discuss certain ways in which this task can be achieved.
Method #1 : Using loop
This is brute force method to perform this particular task. In this, we iterate list, find elements that match a particular condition and take sum.
Python3
# Python 3 code to demonstrate # Sum elements matching condition # using loop # initializing list test_list = [ 3 , 5 , 1 , 6 , 7 , 9 ] # printing original list print ( "The original list is : " + str (test_list)) # using loop # Sum elements matching condition # checks for odd res = 0 for ele in test_list: if ele % 2 ! = 0 : res = res + ele # printing result print ( "The sum of odd elements: " + str (res)) |
The original list is : [3, 5, 1, 6, 7, 9] The sum of odd elements: 25
Time Complexity: O(n)
Auxiliary Space: O(n), where n is length of list
Method #2 : Using sum() + generator expression
This method uses the trick of adding element to the sum whenever the generator expression returns true. By the time list gets exhausted, summation of numbers matching a condition is returned.
Python3
# Python 3 code to demonstrate # Sum elements matching condition # using sum() + generator expression # initializing list test_list = [ 3 , 5 , 1 , 6 , 7 , 9 ] # printing original list print ( "The original list is : " + str (test_list)) # using sum() + generator expression # Sum elements matching condition # checks for odd res = sum (i for i in test_list if i % 2 ! = 0 ) # printing result print ( "The sum of odd elements: " + str (res)) |
The original list is : [3, 5, 1, 6, 7, 9] The sum of odd elements: 25
Time Complexity: O(n) where n is the number of elements in the string list. The sum() + generator expression is used to perform the task and it takes O(n) time.
Auxiliary Space: O(1) constant additional space is required.
Method #3: Using filter()+list()+sum()+ lambda functions
Python3
# Python 3 code to demonstrate # Sum elements matching condition # initializing list test_list = [ 3 , 5 , 1 , 6 , 7 , 9 ] # printing original list print ( "The original list is : " + str (test_list)) res = sum ( list ( filter ( lambda x: x % 2 ! = 0 , test_list))) # printing result print ( "The sum of odd elements: " + str (res)) |
The original list is : [3, 5, 1, 6, 7, 9] The sum of odd elements: 25
Time Complexity: O(N)
Auxiliary Space: O(N)