Skip to content
Related Articles

Related Articles

Improve Article

Python – Count Maximum consecution of K in N consecutive batches

  • Last Updated : 06 Jun, 2021

Given a list, the task is to write a Python Program to count a maximum number of times K occurs consecutively in each batch of size N.

Example:

Input : test_list = [4, 4, 5, 4, 4, 4, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 5, 6, 7, 4, 4, 5, 3, 4, 4, 4, 7, 4, 4, 4,  5, 6, 3, 5, 4, 4, 4, 6, 4, 4, 1, 4, 2, 4, 4], N = 15, K = 4

Output : [6, 3, 3]

Explanation : For first batch of 15 elements, 4 occurs in consecution, 2, 3 and 6. times. Since 6 is maximum hence one of output.



Input : test_list = [4, 4, 5, 4, 4, 4, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 5, 6, 7, 4, 4, 5, 3, 4, 4, 4, 7, 4, 4, 4], N = 15, K = 4

Output : [6, 3]

Explanation : For first batch of 15 elements, 4 occurs in consecution, 2, 3 and 6. times. Since 6 is maximum hence one of output.

Method : Using groupby() + max() + list comprehension + slicing 

In this, we get each consecution using slicing and using range to jump K elements to start grouping for each batch. The max() gets the maximum length of K consecutive group in each batch.

Python3




# Python3 code to demonstrate working of
# Maximum consecution of K in N consecutive batches
# Using groupby() + max() + list comprehension + slicing 
from itertools import groupby
  
# initializing list
test_list = [4, 4, 5, 4, 4, 4, 1, 2, 3, 4, 4, 4, 4, 4, 4,
             4, 5, 6, 7, 4, 4, 5, 3, 4, 4, 4, 7, 4, 4, 4
             5, 6, 3, 5, 4, 4, 4, 6, 4, 4, 1, 4, 2, 4, 4]
               
# printing original list
print("The original list is : " + str(test_list))
  
# initializing N
N = 15
  
# initializing K 
K = 4
  
# max() getting max. consecution of K, ranges being evaluated using slices
# and skips using range()
res = [max(len(list(grup)) for ele, grup in groupby(sub) if ele == K)
          for sub in (test_list[idx : idx + N] 
          for idx in range(0, len(test_list), N))]
  
# printing result
print("Maximum consecution of K for each batch : " + str(res))

Output:

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

Maximum consecution of K for each batch : [6, 3, 3]

 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 :