Comprensión de listas de Python | Partición de tres vías de una array alrededor de un rango dado

Dada una array y un rango [lowVal, highVal] , divida la array alrededor del rango de modo que la array se divida en tres partes.
1) Todos los elementos más pequeños que lowVal van primero.
2) Todos los elementos en el rango lowVal a highVal vienen a continuación.
3) Todos los elementos mayores que highVal aparecen al final.
Los elementos individuales de tres conjuntos pueden aparecer en cualquier orden.

Ejemplos:

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] 

Tenemos una solución existente para este problema, consulte la partición de tres vías de una array alrededor de un enlace de rango dado. Podemos resolver este problema rápidamente en python usando List Comprehension . El enfoque es simple,

  1. Lista separada en tres partes, la primera contendrá elementos menores que lowVal , la segunda contendrá elementos entre lowVal y highVal , la tercera contendrá elementos mayores que highVal .
  2. Concatenar las tres partes juntas.
# 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)

Producción:

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

Publicación traducida automáticamente

Artículo escrito por Shashank Mishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *