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