Saturday, November 22, 2025
HomeLanguagesPython – Squash consecutive values of K

Python – Squash consecutive values of K

Sometimes, while working with Python lists, we can have a problem in which we need to perform the removal of duplicate consecutive values of a particular element. This kind of problem can have applications in many domains such as competitive programming and web development. Let’s discuss certain ways in which this task can be performed.
 

Input : test_list = [4, 5, 5, 4, 3, 3, 5, 5, 5, 6, 5], K = 3 
Output : [4, 5, 5, 4, 3, 5, 5, 5, 6, 5]
Input : test_list = [1, 1, 1, 1], K = 1 
Output : [1] 
 

Method #1 : Using zip() + yield 
The combination of the above functions provides one of the ways to solve this problem. In this, we perform the task of checking consecution duplications using zipping current and next element list, and yield is used to render the element basis of condition.
 

Python3




# Python3 code to demonstrate working of
# Squash consecutive values of K
# Using zip() + yield
 
# helper function
def hlper_fnc(test_list, K):
    for sub1, sub2 in zip(test_list, test_list[1:]):
        if sub1 == sub2 == K:
            continue
        else:
            yield sub1
    yield sub2      
 
# initializing list
test_list = [4, 5, 5, 4, 3, 3, 5, 5, 5, 6, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 5
 
# Squash consecutive values of K
# Using zip() + yield
res = list(hlper_fnc(test_list, K))
 
# printing result
print("List after filtration : " + str(res))


Output : 

The original list is : [4, 5, 5, 4, 3, 3, 5, 5, 5, 6, 5]
List after filtration : [4, 5, 4, 3, 3, 5, 6, 5]

 

The time complexity of the program is O(n) because the helper function iterates through the input list once using the zip() function, which has a time complexity of O(n). Additionally, the yield statement in the helper function does not cause any extra iterations over the input list. The final list() function also has a time complexity of O(n) because it converts the generator object returned by the hlper_fnc() function into a list.

The auxiliary space complexity of the program is O(n) because the program creates a new list with filtered elements that can be as large as the original list. 

 
Method #2 : Using yield + groupby() 
The combination of the above functions can be used to solve this problem. In this, we perform the task of grouping using groupby(), for checking consecutions, and yield is used to return valid elements.
 

Python3




# Python3 code to demonstrate working of
# Squash consecutive values of K
# Using yield + groupby()
import itertools
 
# helper function
def hlper_fnc(test_list, K):
    for key, val in itertools.groupby(test_list):
        if key == K:
            yield key
        else:
            yield from val   
 
# initializing list
test_list = [4, 5, 5, 4, 3, 3, 5, 5, 5, 6, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 5
 
# Squash consecutive values of K
# Using yield + groupby()
res = list(hlper_fnc(test_list, K))
 
# printing result
print("List after filtration : " + str(res))


Output : 

The original list is : [4, 5, 5, 4, 3, 3, 5, 5, 5, 6, 5]
List after filtration : [4, 5, 4, 3, 3, 5, 6, 5]

 

Time Complexity: O(n*n) where n is the number of elements in the list “test_list”.  yield + groupby() performs n*n number of operations.
Auxiliary Space: O(n), extra space is required where n is the number of elements in the list

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

Most Popular

Dominic
32407 POSTS0 COMMENTS
Milvus
97 POSTS0 COMMENTS
Nango Kala
6784 POSTS0 COMMENTS
Nicole Veronica
11930 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11999 POSTS0 COMMENTS
Shaida Kate Naidoo
6907 POSTS0 COMMENTS
Ted Musemwa
7168 POSTS0 COMMENTS
Thapelo Manthata
6863 POSTS0 COMMENTS
Umr Jansen
6847 POSTS0 COMMENTS