Dada una lista de números no negativos, la tarea es ordenar estos enteros según la suma de sus dígitos.
Ejemplos:
Input : [12, 10, 106, 31, 15] Output : [10, 12, 31, 15, 106] Input : [1111, 19, 29, 11, 12, 9] Output : [11, 12, 1111, 9, 19, 29]
Analicemos algunas formas Pythonic de hacer esta tarea.
Enfoque #1: Comprensión de listas
Usar for loop para convertir cada elemento de la lista en una lista diferente con sus dígitos como elementos. Ahora, use la función ordenada con la función mencionada anteriormente como clave .
# Python3 Program to Sort list of # integers according to sum of digits def sortList(lst): digits = [int(digit) for digit in str(lst) ] return sum(digits) # Driver Code lst = [12, 10, 106, 31, 15] print(sorted(lst, key = sortList))
[10, 12, 31, 15, 106]
Enfoque #2: Usarmap()
Este enfoque es similar al enfoque anterior con la ligera diferencia de que, en lugar del bucle for, usamos map()
para convertir cada elemento de la lista en una lista diferente con su dígito como elementos y luego seguimos el enfoque similar al anterior.
# Python3 Program to Sort list of # integers according to sum of digits def sortList(num): return sum(map(int, str(num))) # Driver Code lst = [12, 10, 106, 31, 15] result = sorted(lst, key = sortList) print(result)
[10, 12, 31, 15, 106]
También hay una alternativa de una sola línea al enfoque mencionado anteriormente.
def sortList(lst): return sorted(lst, key = lambda x:(sum(map(int, str(x)))))
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA