Skip to content
Related Articles

Related Articles

Python List Comprehension | Three way partitioning of an array around a given range
  • Last Updated : 18 Jan, 2018

Given an array and a range [lowVal, highVal], partition the array around the range such that array is divided in three parts.
1) All elements smaller than lowVal come first.
2) All elements in range lowVal to highVal come next.
3) All elements greater than highVal appear in the end.
The individual elements of three sets can appear in any order.

Examples:

Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]  
        lowVal = 14, highVal = 20
Output: arr = [1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32]

Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]  
       lowVal = 20, highVal = 20       
Output: arr = [1, 14, 5, 4, 2, 3, 1, 20, 20, 54, 87, 98, 32] 

We have existing solution for this problem please refer Three way partitioning of an array around a given range link. We can solve this problem quickly in python using List Comprehension. Approach is simple,

  1. Separate list in three parts, first one will contain elements less than lowVal, second will contain elements between lowVal and highVal, third will contain elements greater than highVal.
  2. Concatenate all three parts together.




# Function for Three way partitioning of an
# array around a given range
  
def threeWay(input, lowVal, highVal):
  
# separate input list in three parts
     first = [ num for num in input if num<lowVal ]
     second = [ num for num in input if (num>=lowVal and num<=highVal) ]
     third = [ num for num in input if num>highVal ]
  
# concatenate all three parts
     print(first + second + third)
  
# Driver program
if __name__ == "__main__":
    input = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32]
    lowVal = 14
    highVal = 20
    threeWay(input, lowVal, highVal)

Output:

[1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32]

 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 :