Programa de Python para ordenar filas de una array por recuento de elementos personalizados

Dado Matrix, el siguiente programa muestra cómo ordenar las filas de una array por el conteo de presencia de números de una lista específica. 

Entrada : test_list = [[4, 5, 1, 7], [6, 5], [9, 8, 2], [7, 1]], cus_list = [4, 5, 7] 
Salida : [[9 , 8, 2], [6, 5], [7, 1], [4, 5, 1, 7]] 
Explicación : 0 < 1 = 1 < 3 es el orden de recuento de elementos personalizados.
Entrada : test_list = [[4, 5, 1, 7], [6, 5], [7, 1]], cus_list = [4, 5, 7] 
Salida : [[6, 5], [7, 1 ], [4, 5, 1, 7]] 
Explicación : 1 = 1 < 3 es el orden de recuento de elementos personalizados. 
 

Método 1: Usar sort() y len() 

En esto, realizamos una ordenación en el lugar usando sort(), y verificamos todos los elementos y aumentamos el contador en los casos de presencia de elementos de la lista personalizada, len() devuelve la longitud para obtener la cuenta.

Python3

# sorting util.
def get_count(sub):
    return len([ele for ele in sub if ele in cus_list])
  
  
# initializing list
test_list = [[4, 5, 1, 7], [6, 5], [9, 8, 2], [7, 1]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing custom list
cus_list = [4, 5, 7]
  
# performing inplace sort
test_list.sort(key=get_count)
  
# printing result
print("Sorted Matrix : " + str(test_list))

Producción:

La lista original es: [[4, 5, 1, 7], [6, 5], [9, 8, 2], [7, 1]]

Array ordenada: [[9, 8, 2], [6, 5], [7, 1], [4, 5, 1, 7]]

Método 2: Usar sorted() , lambda y len()

Otra forma de resolver este problema es realizar la tarea de ordenar usando sorted() y la función lambda ofrece una lógica de instrucción sin llamar a una función externa.

Python3

# initializing list
test_list = [[4, 5, 1, 7], [6, 5], [9, 8, 2], [7, 1]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing custom list
cus_list = [4, 5, 7]
  
# performing sort using sorted()
res = sorted(test_list, key=lambda sub: len(
    [ele for ele in sub if ele in cus_list]))
  
# printing result
print("Sorted Matrix : " + str(res))

Producción:

La lista original es: [[4, 5, 1, 7], [6, 5], [9, 8, 2], [7, 1]]

Array ordenada: [[9, 8, 2], [6, 5], [7, 1], [4, 5, 1, 7]]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *