Open In App

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)