Python – Ordenar Matrix por ninguna frecuencia

Dada una Array, ordene de acuerdo con la frecuencia de Ninguno de los elementos.

Entrada : test_list = [[Ninguno, Ninguno, 3, Ninguno], [12, 4, 5], [Ninguno, 3, 4]] 
Salida : [[12, 4, 5], [Ninguno, 3, 4], [Ninguno, Ninguno, 3, Ninguno]] 
Explicación : 0, 1, 3 recuentos de Ninguno respectivamente.

Entrada : test_list = [[Ninguno, Ninguno, 3, Ninguno], [Ninguno, 3, 4]] 
Salida : [[12, 4, 5], [Ninguno, Ninguno, 3, Ninguno]] 
Explicación : 0, 3 recuentos de Ninguno respectivamente. 

Método #1: Usar sort()

En esto, realizamos la ordenación usando sort(), y la tarea de extraer la frecuencia de los elementos Ninguno usando una función externa en cada fila. Esto realiza la clasificación en el lugar.

Python3

# Python3 code to demonstrate working of 
# Sort Matrix by None frequency
# Using sort()
  
# external sort function
def get_None_freq(row):
      
    # getting length of None characters
    return len([ele for ele in row if not ele])
  
# initializing list
test_list = [[None, None, 4], [None, None, 3, None],
             [12, 4, 5], [None, 3, 4]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# sorting using sort()
test_list.sort(key = get_None_freq)
  
# printing result 
print("List after sorting : " + str(test_list))

Producción:

La lista original es: [[Ninguno, Ninguno, 4], [Ninguno, Ninguno, 3, Ninguno], [12, 4, 5], [Ninguno, 3, 4]]
Lista después de ordenar: [[12, 4, 5], [Ninguno, 3, 4], [Ninguno, Ninguno, 4], [Ninguno, Ninguno, 3, Ninguno]]

Método #2: Usar sorted() + lambda

En esto, en lugar de la función externa, se utiliza la función lambda para resolver este problema. sorted() se utiliza para realizar tareas de clasificación.

Python3

# Python3 code to demonstrate working of
# Sort Matrix by None frequency
# Using sorted() + lambda
  
# initializing list
test_list = [[None, None, 4], [None, None, 3, None],
             [12, 4, 5], [None, 3, 4]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# sorting using sorted()
# lambda function for None frequency logic
res = sorted(test_list, key=lambda row: len([ele for ele in row if not ele]))
  
# printing result
print("List after sorting : " + str(res))

Producción:

La lista original es: [[Ninguno, Ninguno, 4], [Ninguno, Ninguno, 3, Ninguno], [12, 4, 5], [Ninguno, 3, 4]]
Lista después de ordenar: [[12, 4, 5], [Ninguno, 3, 4], [Ninguno, Ninguno, 4], [Ninguno, Ninguno, 3, Ninguno]]

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 *