Open In App

Python | Count unmatched elements

Last Updated : 10 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

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 number that does not match the particular condition to have a distinguish which 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 does not match a particular condition and take count. 

Python3
# Python 3 code to demonstrate  
# Count unmatched elements 
# 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 
# Count unmatched elements 
# checks for odd 
res = 0
for ele in test_list: 
    if not ele % 2 != 0: 
        res = res + 1 
          
# printing result 
print ("The number of non-odd elements: " + str(res)) 

Output : 
The original list is : [3, 5, 1, 6, 7, 9]
The number of non-odd elements: 1

 

Time complexity: O(n), where n is the length of the test_list. The loop takes O(n) time
Auxiliary Space: O(1), extra space of size n is required

Method #2 : Using len() + generator expression 
This method uses the trick of counting elements to the add 1 whenever the generator expression returns False. By the time list gets exhausted, count of numbers not matching a condition is returned.

Python3
# Python 3 code to demonstrate  
# Count unmatched elements 
# using len() + generator expression 
  
# initializing list 
test_list = [3, 5, 1, 6, 7, 9] 
  
# printing original list 
print ("The original list is : " + str(test_list)) 
  
# using len() + generator expression 
# Count unmatched elements 
# checks for odd 
res = len(list(i for i in test_list if not i % 2 != 0)) 
  
# printing result 
print ("The number of non-odd elements: " + str(res)) 

Output : 
The original list is : [3, 5, 1, 6, 7, 9]
The number of non-odd elements: 1

 

Time Complexity: O(n), where n is the length of the input list. This is because we’re using len() + generator expression which has a time complexity of O(n) in the worst case.
Auxiliary Space: O(1), as we’re using constant additional space

Method #3 : Using reduce() + lambda
This method uses the reduce function to iterate through the list and add 1 to the count whenever the lambda function returns False. The reduce function accumulates the count and returns the final count of elements that do not match the condition.

Python3
# Python 3 code to demonstrate 
# Count unmatched elements
# using reduce() + lambda

from functools import reduce

# initializing list
test_list = [3, 5, 1, 6, 7, 9]

# printing original list
print ("The original list is : " + str(test_list))

# using reduce() + lambda
# Count unmatched elements
# checks for odd
res = reduce(lambda x, y: x + 1 if not y % 2 != 0 else x, test_list, 0)

# printing result
print ("The number of non-odd elements: " + str(res))
#This code is contributed by Edula Vinay Kumar Reddy

Output
The original list is : [3, 5, 1, 6, 7, 9]
The number of non-odd elements: 1

Time complexity: O(n)
Auxiliary Space: O(1)

Method #4 : Using a list comprehension:

Python3
test_list = [3, 5, 1, 6, 7, 9]
# printing original list
print ("The original list is : " + str(test_list))
res = len([i for i in test_list if i % 2 == 0])
print("Number of non-odd elements:", res)
#This code is contributed by Jyothi pinjala.

Output
The original list is : [3, 5, 1, 6, 7, 9]
Number of non-odd elements: 1


Time complexity: O(n)
Auxiliary Space: O(n)

Method#5: Using filter()

Python3
# initializing list 
test_list = [3, 5, 1, 6, 7, 9] 

# printing original list 
print ("The original list is : " + str(test_list)) 

# using filter function 
# Count unmatched elements 
# checks for odd 
res = len(list(filter(lambda ele: ele % 2 == 0, test_list)))

# printing result 
print ("The number of non-odd elements: " + str(res))
#This code is contributed by Vinay Pinjala.

Output
The original list is : [3, 5, 1, 6, 7, 9]
The number of non-odd elements: 1

Time complexity: O(n)
Auxiliary Space: O(n)


Next Article
Practice Tags :

Similar Reads