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: 902 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
# 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 |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






