Dada una lista de strings. La tarea es ordenar la lista por la parte numérica de la string.
Ejemplos:
Entrada : test_list = [“Gfg34”, “is67”, “be3st”, “f23or”, “ge9eks”]
Salida : [‘be3st’, ‘ge9eks’, ‘f23or’, ‘Gfg34’, ‘is67’]
Explicación : 3 < 9 < 23 < 34 < 67, números extraídos de strings.Entrada : test_list = [“Gfg4”, “is67”, “be3st”, “f23or”, “ge9eks”]
Salida : [‘be3st’, ‘Gfg4’, ‘ge9eks’, ‘f23or’, ‘is67’]
Explicación : 3 < 4 < 9 < 23 < 67, números extraídos de strings.
Método #1: Usar sort() + re.findall()
En esto, realizamos la tarea de ordenar usando sort() , la función explícita se usa para extraer números usando findall().
Python3
# Python3 code to demonstrate working of # Sort Strings on numerical substrings # Using sort() + findall() import re # helper function to perform sort def num_sort(test_string): return list(map(int, re.findall(r'\d+', test_string)))[0] # initializing list test_list = ["Gfg34", "is67", "be3st", "f23or", "ge9eks"] # printing original list print("The original list is : " + str(test_list)) # calling function test_list.sort(key=num_sort) # printing result print("Strings after numerical Sort : " + str(test_list))
Producción:
La lista original es: [‘Gfg34’, ‘is67’, ‘be3st’, ‘f23or’, ‘ge9eks’]
Strings después de ordenación numérica: [‘be3st’, ‘ge9eks’, ‘f23or’, ‘Gfg34’, ‘is67 ‘]
Método #2: Usar sort() + lambda + findall()
En esto, realizamos una función similar, pero la diferencia es que usamos la función lambda en lugar de una función externa para realizar la tarea de clasificación.
Python3
# Python3 code to demonstrate working of # Sort Strings on numerical substrings # Using sort() + lambda + findall() import re # initializing list test_list = ["Gfg34", "is67", "be3st", "f23or", "ge9eks"] # printing original list print("The original list is : " + str(test_list)) # findall() getting all integers. # conversion to integers using map() test_list.sort(key=lambda test_string : list( map(int, re.findall(r'\d+', test_string)))[0]) # printing result print("Strings after numerical Sort : " + str(test_list))
Producción:
La lista original es: [‘Gfg34’, ‘is67’, ‘be3st’, ‘f23or’, ‘ge9eks’]
Strings después de ordenación numérica: [‘be3st’, ‘ge9eks’, ‘f23or’, ‘Gfg34’, ‘is67 ‘]
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