Programa de Python para enumerar el valor Ordenar por número en String

Dada una Lista de strings, la tarea es escribir un programa Python para ordenar la lista por el número presente en las Strings. Si no hay ningún número presente, serán llevados al frente de la lista.

Entrada : test_list = [“gfg is 4”, “all no 1”, “geeks over 7 seas”, “and 100 planets”] 
Salida : [‘all no 1’, ‘gfg is 4’, ‘geeks over 7 seas ‘, ‘y 100 planetas’] 
Explicación : 1 < 4 < 7 < 100, números en strings que deciden el orden.

Entrada : test_list = [“gfg is 4”, “geeks over 7 seas”, “and 100 planets”] 
Salida : [‘gfg is 4’, ‘geeks over 7 seas’, ‘and 100 planets’] 
Explicación : 4 < 7 < 100, números en strings que deciden el orden. 

Método 1: Usar sort() , split() e isdigit()

En esto, realizamos la tarea de clasificación en el lugar usando sort(), y realizamos la tarea de obtener el número de la string usando split() y la detección final se realiza usando isdigit(). 

Ejemplo: 

Python3

import sys
 
def num_sort(strn):
 
    # getting number using isdigit() and split()
    computed_num = [ele for ele in strn.split() if ele.isdigit()]
 
    # assigning lowest weightage to strings
    # with no numbers
    if len(computed_num) > 0:
        return int(computed_num[0])
    return -1
 
 
# initializing Matrix
test_list = ["gfg is", "all no 7", "geeks over seas", "and planets 5"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# performing sort
test_list.sort(key=num_sort)
 
# printing result
print("Sorted Strings : " + str(test_list))

Producción:

La lista original es: [‘gfg is’, ‘all no 7’, ‘geeks over seas’, ‘and planets 5’]

Strings ordenadas: [‘gfg is’, ‘geeks over seas’, ‘and planets 5’, ‘all no 7’]

Método 2: Usar sorted() , lambda ,   split() e isdigit()

En esto, la función lambda se usa para inyectar la funcionalidad de ordenación realizada usando sorted(). El resto de cada proceso es similar al método explicado anteriormente.

Ejemplo:

Python3

# initializing Matrix
test_list = ["all no 100", "gfg is", "geeks over seas 62", "and planets 3"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# performing sorting
# lambda function injecting functionality
res = sorted(test_list, key=lambda strn: -1
             if len([ele for ele in strn.split()
                     if ele.isdigit()]) == 0
             else int([ele for ele in strn.split()
                       if ele.isdigit()][0]))
 
# printing result
print("Sorted Strings : " + str(res))

Producción:

La lista original es: [‘all no 100’, ‘gfg is’, ‘geeks over seas 62’, ‘and planets 3’]

Strings ordenadas: [‘gfg is’, ‘and planets 3’, ‘geeks over seas 62’, ‘all no 100’]

La complejidad de tiempo y espacio de ambos métodos es la misma:

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

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 *