Sunday, November 17, 2024
Google search engine
HomeLanguagesPython – Test if Rows have Similar frequency

Python – Test if Rows have Similar frequency

In this article we have a given Matrix, test if all rows have similar elements.

Input : test_list = [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]] 
Output : True 
Explanation : All lists have 2, 3, 4, 6, 7.

Input : test_list = [[6, 4, 2, 7, 3], [7, 5, 6, 4, 2], [2, 4, 7, 3, 6]] 
Output : False 
Explanation : 2nd list has 5 instead of 3. 

Method #1 : Using Counter() + list comprehension

In this, we compute the elements’ frequency dictionary using Counter(), and compare with each row in Matrix, if they check out then True is returned.

Python3




# Python3 code to demonstrate working of
# Test if Rows have Similar frequency
# Using Counter() + list comprehension
from collections import Counter
 
# initializing list
test_list = [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking if all rows are similar
res = all(dict(Counter(row)) == dict(Counter(test_list[0])) for row in test_list)
 
# printing result
print("Are all rows similar : " + str(res))


Output

The original list is : [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
Are all rows similar : True

Time Complexity: O(n*m)
Auxiliary Space: O(1)

Method #2 : Using list comprehension + sorted() + all()

In this, we check for similar elements using sorted(), by ordering all the elements to sorted format.

Python3




# Python3 code to demonstrate working of
# Test if Rows have Similar frequency
# Using list comprehension + sorted() + all()
 
# initializing list
test_list = [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking if all rows are similar
# ordering each row to test
res = all(list(sorted(row)) == list(sorted(test_list[0])) for row in test_list)
 
# printing result
print("Are all rows similar : " + str(res))


Output

The original list is : [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
Are all rows similar : True

Time Complexity: O(nlogn) where n is the number of elements in the list “test_list”.  The time complexity of the sorted() function is O(n log n)
Auxiliary Space: O(1), no extra space is required

Method #3 : Using for loops + extend(),set(),count() methods

Python3




# Python3 code to demonstrate working of
# Test if Rows have Similar frequency
 
# initializing list
test_list = [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking if all rows are similar
res=[]
x=[]
for i in test_list:
    x.extend(i)
a=list(set(x))
y=[]
for i in a:
    y.append(x.count(i))
res=len(set(y))==1
# printing result
print("Are all rows similar : " + str(res))


Output

The original list is : [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
Are all rows similar : True

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

Method#4: Using dictionary comprehension

This Python code  checks if all the rows in a 2D list have similar frequency of elements. The input is a list of lists test_list, where each inner list represents a row. The code uses a dictionary comprehension to count the frequency of each element in each row, and then compares these dictionaries with the dictionary of the first row to check if they are equal.

Python3




# Python3 code to demonstrate working of
# Test if Rows have Similar frequency
# Using dictionary comprehension
 
# initializing list
test_list = [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
 
# printing original list
print("The original list is : " + str(test_list))
 
# checking if all rows are similar
res = all({i: row.count(i) for i in row} == {i: test_list[0].count(i) for i in test_list[0]} for row in test_list)
 
# printing result
print("Are all rows similar : " + str(res))
#This code is contributed by Vinay Pinjala.


Output

The original list is : [[6, 4, 2, 7, 3], [7, 3, 6, 4, 2], [2, 4, 7, 3, 6]]
Are all rows similar : True

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

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments