Python | Retain K consecutive elements

• Last Updated : 29 Nov, 2019

Sometimes while working with data, we can have a problem in which we need to select some of the elements that occur K times consecutively. This problem can occur in many domains. Let’s discuss certain ways in which this problem can be solved.

Method #1 : Using groupby() + list comprehension
This task can be performed using above functionalities. In this, we group all the numbers that are occurring K consecutively. We iterate the list using list comprehension.

 # Python3 code to demonstrate working of# Retain K consecutive elements# using groupby() + list comprehensionfrom itertools import groupby  # initialize list test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]  # printing original list print("The original list : " + str(test_list))  # initialize K K = 2  # Retain K consecutive elements# using groupby() + list comprehensionres = [i for i, j in groupby(test_list) if len(list(j)) == K]  # printing resultprint("The K consecutive elements are : " + str(res))
Output :
The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]

Method #2 : Using list comprehension + slice() + groupby()
This task can also be performed using above functions. In this, we just perform grouping in similar way as above but the way we extract consecutive elements is by slice().

 # Python3 code to demonstrate working of# Retain K consecutive elements# using groupby() + list comprehension + islice()from itertools import groupby, islice  # initialize list test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]  # printing original list print("The original list : " + str(test_list))  # initialize K K = 2  # Retain K consecutive elements# using groupby() + list comprehension + islice()res = [i for i, j in groupby(test_list) if len(list(islice(j, 0, K))) == K]  # printing resultprint("The K consecutive elements are : " + str(res))
Output :
The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]

My Personal Notes arrow_drop_up