Python – Consecutive identical elements count
Given the elements list, get all the elements that have an identical element as the next element.
Input : test_list = [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 2, 10]
Output : 3
Explanation : 5, 6 and 2 has identical element as their next element.
Input : test_list = [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 3, 10]
Output : 2
Explanation : 5 and 6 has identical element as their next element.
Method #1 : Using loop + set()
In this, we iterate and check for the next element, if equal to current, we add in result list, then it is converted to set to get distinct elements.
Python3
test_list = [ 4 , 5 , 5 , 5 , 5 , 6 , 6 , 7 , 8 , 2 , 2 , 10 ]
print ( "The original list is : " + str (test_list))
res = []
for idx in range ( 0 , len (test_list) - 1 ):
if test_list[idx] = = test_list[idx + 1 ]:
res.append(test_list[idx])
res = len ( list ( set (res)))
print ( "Consecutive identical elements count : " + str (res))
|
Output
The original list is : [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 2, 10]
Consecutive identical elements count : 3
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #2 : Using list comprehension + set() + len()
This method is similar to above method, difference being its shorter way to solve this problem. The len(), and set() are used for task of getting unique elements count.
Python3
test_list = [ 4 , 5 , 5 , 5 , 5 , 6 , 6 , 7 , 8 , 2 , 2 , 10 ]
print ( "The original list is : " + str (test_list))
res = [test_list[idx] for idx in range (
0 , len (test_list) - 1 ) if test_list[idx] = = test_list[idx + 1 ]]
res = len ( list ( set (res)))
print ( "Consecutive identical elements count : " + str (res))
|
Output
The original list is : [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 2, 10]
Consecutive identical elements count : 3
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #3: Using itertools.groupby()
- First, we import the itertools module which provides various functions for efficient looping
- We create a list named test_list which contains 12 elements.
- We print the original list using print() function.
- Using itertools.groupby() function, we group the consecutive identical elements in the list into subgroups. The itertools.groupby() function returns an iterator that generates consecutive keys and groups from an iterable. In this case, the iterable is the test_list.
- We use a list comprehension with a condition to count the number of groups that have a length greater than 1 (which means there are consecutive identical elements).
- We use the sum() function to sum up the number of groups that satisfy the condition in the list comprehension.
- We print the count of consecutive identical elements using print() function.
Python3
import itertools
test_list = [ 4 , 5 , 5 , 5 , 5 , 6 , 6 , 7 , 8 , 2 , 2 , 10 ]
print ( "The original list is : " + str (test_list))
res = sum ( 1 for _, grp in itertools.groupby(test_list) if len ( list (grp)) > 1 )
print ( "Consecutive identical elements count : " + str (res))
|
Output
The original list is : [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 2, 10]
Consecutive identical elements count : 3
Time complexity: O(n) – The itertools.groupby() function iterates through the entire input list once, which takes O(n) time.
Auxiliary space: O(1) – The itertools.groupby() function does not create any additional data structures that depend on the size of the input list.
Method #4: Using a Counter object from the collections module
Step-by-step approach:
- Import the Counter class from the collections module.
- Create a Counter object by passing the test_list to it.
- Iterate over the items in the Counter object and count the number of elements with frequency greater than 1.
- Print the count of consecutive identical elements.
Python3
from collections import Counter
test_list = [ 4 , 5 , 5 , 5 , 5 , 6 , 6 , 7 , 8 , 2 , 2 , 10 ]
print ( "The original list is : " + str (test_list))
counter_obj = Counter(test_list)
res = sum ( 1 for freq in counter_obj.values() if freq > 1 )
print ( "Consecutive identical elements count : " + str (res))
|
Output
The original list is : [4, 5, 5, 5, 5, 6, 6, 7, 8, 2, 2, 10]
Consecutive identical elements count : 3
Time complexity: O(n), where n is the length of the list.
Auxiliary space: O(n), for storing the Counter object
Last Updated :
10 May, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...