Skip to content
Related Articles

Related Articles

Improve Article

Python – Replace identical consecutive elements in list with product of the frequency and Item

  • Last Updated : 17 Jun, 2021

Given a list, the task is to write a Python program to replace the grouping of the consecutive elements with a product of the frequency and Item.

Input : test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Output : [12, 6, 7, 15, 16, 30, 3, 4]

Explanation : 3 occurs 4 times in consecution hence, 3*4 = 12, the result.

Input : test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5]



Output : [12, 6, 7, 15]

Explanation : 5 occurs 3 times in consecution hence, 5*3 = 15, the result.

Method 1: Using loop.

In this, the element is compared with the previous element for the decision of group end, if elements are different, a product of count till now and element is appened as result. 

Python3




# Python3 code to demonstrate working of
# Equal Consecution Product
# Using loop
  
# initializing list
test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8,
             8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]
               
# printing original list
print("The original list is : " + str(test_list))
  
res = []
count = 1
for idx in range(1, len(test_list)):
      
    # checking with prev element 
    if test_list[idx - 1] != test_list[idx]:
          
        # appending product
        res.append((test_list[idx - 1] * count))
        count = 0
    count += 1
res.append((test_list[-1] * count))
  
# printing result
print("Elements after equal Consecution product : " + str(res))

Output:

The original list is : [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Elements after equal Consecution product : [12, 6, 7, 15, 16, 30, 3, 4]

Method 2: Using groupby() + sum()

In this, groups are formed using groupby() and summation of the grouped elements gives the required product.

Python3




# Python3 code to demonstrate working of
# Equal Consecution Product
# Using groupby() + sum()
from itertools import groupby
  
# initializing list
test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]
               
# printing original list
print("The original list is : " + str(test_list))
  
# creating Consecution groups and summing for required values
res = [sum(grup) for k, grup in groupby(test_list)]
  
# printing result
print("Elements after equal Consecution product : " + str(res))

Output:

The original list is : [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Elements after equal Consecution product : [12, 6, 7, 15, 16, 30, 3, 4]

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :