Ordem Crecente E Decrecente
Ordenação com ordem crecente e decrecente em Python
O primeiro passo é entender que existem duas formas principais de fazer isso: o método .sort(), que modifica a lista, e a função sorted(), que devolve uma nova lista e deixa a original intocada. Se você está trabalhando com dados e não quer sobrescrever algo que precisa manter, use sorted. Senão, sort é mais eficiente porque evita a alocação de memória extra. Em ordem crecente, basta chamar o método sem parâmetros adicionais. A execução é direta, mas existem detalhes que todo mundo esquece até dar problema na produção.lista = [5, 2, 8, 1, 9, 3] lista.sort() print(lista) [1, 2, 3, 5, 8, 9]
print(sorted(lista, reverse=True)) [9, 8, 5, 3, 2, 1]
Para inverter a direção, o parâmetro reverse recebe True e a ordenação acontece do maior para o menor. Não precisa fazer truques com slicing ou funções matemáticas. O Python já entrega isso pronto.ordem crecente e decrecente na prática
A parte que as pessoas subestimam é o parâmetro key. Ele permite definir uma função personalizada para determinar o critério de ordenação. É aqui que a coisa fica interessante quando você precisa classificar strings, dicionários ou objetos complexos.pessoas = [("Ana", 35), ("Carlos", 22), ("Bia", 28)] pessoas.sort(key=lambda x: x[1]) print(pessoas) [('Carlos', 22), ('Bia', 28), ('Ana', 35)]

pessoas.sort(key=lambda x: x[1], reverse=True) print(pessoas) [('Ana', 35), ('Bia', 28), ('Carlos', 22)]
Quando a ordenação envolve strings, o comportamento padrão é baseado nos códigos Unicode. Isso significa que letras maiúsculas vêm antes das minúsculas, e acentos podem gerar resultados inesperados. Se o seu objetivo é uma ordenação mais intuitiva para o português, o ideal é usar a função locale.strxfrm() ou a biblioteca pyuca, que implementam a ordenação Unicode Collation Algorithm. Sem isso, ["a", "B", "A"] será ordenado como ["A", "B", "a"], o que raramente é o que o usuário espera. Um problema que eu enfrentei recentemente aconteceu num projeto de relatórios financeiros. Eu tinha uma lista de códigos de transação no formato "TXN-001", "TXN-010", "TXN-02" e precisei ordená-los numericamente dentro de cada grupo. A ordenação padrão trata tudo como string, então o resultado ficava completamente errado: "TXN-001", "TXN-010", "TXN-02". A solução foi usar uma função key que extrai a parte numérica e converte para int.codigos = ["TXN-001", "TXN-010", "TXN-02", "TXN-100", "TXN-050"] codigos.sort(key=lambda x: int(x.split("-")[1])) print(codigos) ['TXN-001', 'TXN-02', 'TXN-010', 'TXN-050', 'TXN-100']
Isso resolveu o problema imediato, mas também expôs uma limitação importante: se algum elemento da lista viesse com um formato diferente — digamos, "TXN-ERRADO" — a conversão dispararia um ValueError e pararia tudo. Em produção, você precisa tratar esses casos com try-except ou validar os dados antes de ordenar. Outro ponto que merece atenção é a estabilidade da ordenação. O Timsort, algoritmo usado pelo Python, é estável, o que significa que elementos com a mesma chave mantêm a ordem relativa original. Isso pode ser tanto uma vantagem quanto uma armadilha. Se você ordenar uma lista de transações por data e depois por valor, dependendo da ordem em que aplicar os critérios, o resultado final pode variar. A abordagem segura é definir um key único ou aplicar a ordenação em múltiplas etapas na ordem reversa dos critérios de prioridade. Para listas muito grandes, a diferença entre sort e sorted pode ser relevante. O sort opera in-place e usa memória constante adicional, enquanto sorted cria uma cópia completa. Em uma lista com milhões de registros, isso pode significar dezenas de megabytes extras só para a ordenação. Se a memória é um problema, o sort é a escolha óbvia. Há ainda o caso de colunas com valores nulos. Em Python, None não pode ser comparado diretamente com números ou strings em versões anteriores ao 3.3, e mesmo nas versões mais recentes a comparação gera TypeError. Se o seu dado contém None, você precisa tratá-los explicitamente, movendo-os para o início ou para o fim da lista antes ou durante a ordenação.dados = [3, None, 1, None, 2] dados.sort(key=lambda x: (x is None, x)) print(dados) [3, 1, 2, None, None]

Galeria
-
Atividades sobre Ordem Crescente e Decrescente para imprimir | Alunos e ... -
Conhecendo a Ordem Crescente e Decrescente -
A Arte de Ensinar e Aprender: Atividades ordem crescente e decrescente