Você está aqui: Python ::: Dicas & Truques ::: Lista (List) |
Como ordenar um array de acordo com a soma dos dígitos dos elementos em Python usando laços e list comprehensionQuantidade de visualizações: 777 vezes |
Nesta dica mostrarei como podemos ordenar uma list do Python de acordo com a soma dos dígitos de seus elementos. Em outra dica dessa seção eu mostrei como realizar esta tarefa usando uma função lambda. Agora veremos como atingir o mesmo resultado usando laços e list comprehension. Veja o código completo para o exemplo: # função que permite ordenar um vetor de acordo com a soma de # seus dígitos def ordenar(valores): # primeiro criamos uma nova lista e copiamos para ela # os valores do vetor passado como parâmetro desordenado = valores.copy() # criamos o vetor que guardará os valores ordenados ordenado = [] # enquanto houver elementos no vetor desordenado while desordenado: # The number that comes first, since the list is sorted by the primes # vamos assumir que o primeiro valor é o menor de todos menor = desordenado[0] # vamos obter a soma dos dígitos deste número soma = sum(int(c) for c in str(menor) if c != "-") # agora percorremos todos os itens do vetor desordenado for elemento in desordenado: soma_elemento = sum(int(c) for c in str(elemento) if c != "-") # a soma deste elemento é menor que a soma que já tínhamos if soma_elemento < soma: menor = elemento soma = soma_elemento # adiciona o menor elemento no vetor ordenado ordenado.append(menor) # remove o elemento do vetor desordenado desordenado.remove(menor) # retorna o vetor ordenado return ordenado # função principal do programa def main(): # vamos declarar um array de inteiros numeros = [81, 10, 32, 40, 112, 9, 52, 15, 69] # vamos mostrar o conteúdo deste array print("O vetor original é:\n{0}".format(numeros)) # agora vamos ordenar a lista de acordo com a soma dos seus dígitos print("\nVetor ordenado de acordo com a soma de seus dígitos:\n{0}".format( ordenar(numeros))) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O vetor original é: [81, 10, 32, 40, 112, 9, 52, 15, 69] Vetor ordenado de acordo com a soma de seus dígitos: [10, 40, 112, 32, 15, 52, 81, 9, 69] |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
Java - Como remover itens repetidos de uma ArrayList usando um objeto da classe LinkedHashSet do Java GNU Octave - GNU Octave para Álgebra Linear - Como calcular o determinante de uma matriz usando a função det() do GNU Octave |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |