Open In App

Python – Test if common values are greater than K

Last Updated : 30 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Sometimes, while working with Lists, we can have a problem in which we need to track common elements in list. This is quite common and we often have constructs to solve this. But sometimes, we require to consider two list as matching if they contain atleast K matching elements. Lets discuss certain ways in which this can be performed.
 Method #1 : Using set() + len() The combination of above methods can be used to solve this task. In this we first convert each list into set and then use len() to check if matching elements are greater than K. 

Python3




# Python3 code to demonstrate
# Test if common values are greater than K
# using len() + set()
 
# Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# Initializing K
K = 2
 
# Test if common values are greater than K
# using len() + set()
res = len(set(test_list1) & set(test_list2)) >= K
 
# printing result
print ("Are common elements greater than K ? : " + str(res))


Output

The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements greater than K ? : True

Time Complexity: O(n*n) where n is the number of elements in the list “test_list”.  
Auxiliary Space: O(n), where n is the number of elements in the new res list 

  Method #2 : Using sum() This is yet another way in which this problem can be solved. In this, we just take count of all the column elements and sum them using sum() and then check with K. 

Python3




# Python3 code to demonstrate
# Test if common values are greater than K
# using sum()
 
# Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# Initializing K
K = 2
 
# Test if common values are greater than K
# using sum()
res = sum(i in test_list1 for i in test_list2) >= 2
 
# printing result
print ("Are common elements greater than K ? : " + str(res))


Output

The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements greater than K ? : True

  Method #3 : Using Counter() function

Python3




# Python3 code to demonstrate
# Test if common values are greater than K
from collections import Counter
 
# Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
 
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# Initializing K
K = 2
 
count = 0
freq = Counter(test_list2)
for i in test_list1:
    if i in freq.keys():
        count += 1
# Test if common values are greater than K
# using sum()
res = count >= K
 
# printing result
print("Are common elements greater than K ? : " + str(res))


Output

The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements greater than K ? : True

Time Complexity:O(N)
Auxiliary Space:O(N)

Approach 4: Using List Comprehension
 

Python3




#Python3 code to demonstrate
#Test if common values are greater than K
#Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
 
#printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
#Initializing K
K = 2
 
#Test if common values are greater than K
#using List Comprehension
res = sum([1 for i in test_list2 if i in test_list1]) >= K
 
#printing result
print("Are common elements greater than K ? : " + str(res))


Output

The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements greater than K ? : True

Time Complexity:O(N)
Auxiliary Space:O(N)

Approach 5: Using filter and lambda function:

1. Initialize test_list1 and test_list2 with given values
2. Initialize K with given value
3. Initialize an empty list called common
4. Loop through each element i in test_list2:
a. Check if i is in test_list1
b. If it is, append i to the common list
5. Check if the length of common is greater than or equal to K
6. Print the original lists and the result of the comparison

Python3




test_list1 = ['Gfg', 'is', 'for', 'Geeks']
 
test_list2 = [1, 'Gfg', 2, 'Geeks']
 
K = 2
 
 
common = list(filter(lambda x: x in test_list1, test_list2))
 
res = len(common) >= K
 
 
print("The original list 1 is : " + str(test_list1))
 
print("The original list 2 is : " + str(test_list2))
 
print("Are common elements greater than K? : " + str(res))
 
#This code is contributed by Jyothi pinjala.


Output

The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements greater than K? : True

The time complexity :O(n^2), because for each element in test_list2, it checks if it’s also in test_list1, which requires looping through test_list1 for each element in test_list2. In the worst case scenario, where both lists have n elements, the algorithm will perform n^2 operations.

The space complexity : O(n), because it stores a list of common elements in memory. The size of this list is proportional to the number of common elements, which is at most n.
has context menu



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads