Skip to content
Related Articles

Related Articles

Python program to print Rows where all its Elements’ frequency is greater than K

View Discussion
Improve Article
Save Article
  • Last Updated : 11 Oct, 2020

Given Matrix, extract all rows whose all elements have a frequency greater than K.

Input : test_list = [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 1, 1, 1], [4, 5, 6, 8]], K = 2 
Output : [[1, 1, 1, 1]] 
Explanation : Here, frequency of 1 is 4 > 2, hence row retained.

Input : test_list = [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 3, 4, 1], [4, 5, 6, 8]], K = 2 
Output : [] 
Explanation : No list filtered as result. 

Method #1 : Using list comprehension + all() + count()

In this, we perform task of iterating through elements using list comprehension and all() is used to check for each elements count(), extracted using count().

Python3




# Python3 code to demonstrate working of 
# Rows with all Elements frequency greater than K
# Using list comprehension + count() + all()
  
def freq_greater_K(row, K) :
      
    # checking for all elements occurrence greater than K 
    return all(row.count(ele) > K for ele in row)
  
# initializing list
test_list = [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 1, 1, 1], [4, 5, 6, 8]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 1
  
# checking for each row 
res = [ele for ele in test_list if freq_greater_K(ele, K)]
  
# printing result 
print("Filtered rows : " + str(res))

Output:

The original list is : [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 1, 1, 1], [4, 5, 6, 8]]
Filtered rows : [[1, 1, 2, 3, 2, 3], [1, 1, 1, 1]]

Method #2 : Using filter() + lambda + all() + count()

In this, task of filtering is done using filter() + lambda, all() is used to check for each element, count() to compute count.

Python3




# Python3 code to demonstrate working of 
# Rows with all Elements frequency greater than K
# Using filter() + lambda + all() + count()
  
def freq_greater_K(row, K) :
      
    # checking for all elements occurrence greater than K 
    return all(row.count(ele) > K for ele in row)
  
# initializing list
test_list = [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 1, 1, 1], [4, 5, 6, 8]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 1
  
# checking for each row 
res = list(filter(lambda ele : freq_greater_K(ele, K), test_list))
  
# printing result 
print("Filtered rows : " + str(res))

Output:

The original list is : [[1, 1, 2, 3, 2, 3], [4, 4, 5, 6, 6], [1, 1, 1, 1], [4, 5, 6, 8]]
Filtered rows : [[1, 1, 2, 3, 2, 3], [1, 1, 1, 1]]


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!