Python – Ordenar array por conteo de palíndromos

Dada una array de strings, ordene cada fila según el número de strings palindrómicas.

Entrada : test_list = [[“nitin”, “meem”, “geeks”], [“peep”], [“gfg”, “is”, “best”], [“ve”, “level”, “mom ”, “mediodía”]] 
Salida : [[‘peep’], [‘gfg’, ‘is’, ‘best’], [‘nitin’, ‘meem’, ‘geeks’], [‘ve’, ‘ level’, ‘mom’, ‘noon’]] 
Explicación : 1 = 1 < 2 < 4 es un orden de conteo palindrómico.

Entrada : test_list = [[“nitin”, “meem”, “geeks”], [“peep”], [“ve”, “level”, “mom”, “noon”]] 
Salida : [[‘peep’ ], [‘nitin’, ‘meem’, ‘geeks’], [‘ve’, ‘level’, ‘mom’, ‘noon’]] 
Explicación : 1 < 2 < 4 es un orden de conteo palindrómico. 

Método #1: Usar invertido() + len() + sort()

En esto, realizamos una ordenación in situ usando sort(), el cálculo de la longitud y la verificación de Palindrome se realiza usando reversed().

Python3

# Python3 code to demonstrate working of
# Sort Matrix by Palindrome count
# Using reversed() + len() + sort()
  
# get palin
def get_palin_freq(row):
  
    # returning length
    return len([sub for sub in row if ''.join(list(reversed(sub))) == sub])
  
  
# initializing list
test_list = [["nitin", "meem", "geeks"], ["peep"],
             ["gfg", "is", "best"], 
             ["sees", "level", "mom", "noon"]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# performing sort
test_list.sort(key=get_palin_freq)
  
# printing result
print("Sorted rows : " + str(test_list))

Producción:

La lista original es: [[‘nitin’, ‘meem’, ‘geeks’], [‘peep’], [‘gfg’, ‘is’, ‘best’], [‘ve’, ‘level’, ‘ mamá’, ‘mediodía’]]
Filas ordenadas: [[‘peep’], [‘gfg’, ‘is’, ‘best’], [‘nitin’, ‘meem’, ‘geeks’], [‘ve’ , ‘nivel’, ‘mamá’, ‘mediodía’]]

Método #2: Usar sorted() + len() + reversed()

Similar al método anterior, la diferencia que se ordena() se usa junto con la función lambda para realizar la tarea en una sola línea sin la llamada a la función externa.

Python3

# Python3 code to demonstrate working of
# Sort Matrix by Palindrome count
# Using sorted() + len() + reversed()
  
# initializing list
test_list = [["nitin", "meem", "geeks"], ["peep"],
             ["gfg", "is", "best"], ["sees", "level", "mom", "noon"]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# performing sort
# sorted() and lambda used to get 1 sentence approach
res = sorted(test_list, key=lambda row: len(
    [sub for sub in row if ''.join(list(reversed(sub))) == sub]))
  
# printing result
print("Sorted rows : " + str(res))

Producción:

La lista original es: [[‘nitin’, ‘meem’, ‘geeks’], [‘peep’], [‘gfg’, ‘is’, ‘best’], [‘ve’, ‘level’, ‘ mamá’, ‘mediodía’]] Filas ordenadas: [[‘peep’], [‘gfg’, ‘is’, ‘best’], [‘nitin’, ‘meem’, ‘geeks’], [‘ve’ , ‘nivel’, ‘mamá’, ‘mediodía’]]

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 *