Em [[Linguagem de programação Python|Python]], existem duas funções principais para ordenar sequências: `list.sort()` e `sorted()`. Ambas permitem ordenar listas, tuplas e outras estruturas de dados, mas funcionam de maneiras diferentes. **1. `list.sort()`** * É um método que modifica a lista original diretamente (in-place). * Não retorna nada (`None`). * Só pode ser usado com listas (tipos mutáveis). **Exemplo:** ```python lista = [3, 1, 4, 1, 5, 9, 2, 6] lista.sort() print(lista) # Output: [1, 1, 2, 3, 4, 5, 6, 9] ``` **2. `sorted()`** * Retorna uma nova lista ordenada, sem modificar a sequência original. * Pode ser usado com qualquer iterável (listas, tuplas, strings, etc.). **Exemplo:** ```python lista = [3, 1, 4, 1, 5, 9, 2, 6] lista_ordenada = sorted(lista) print(lista) # Output: [3, 1, 4, 1, 5, 9, 2, 6] (lista original não foi modificada) print(lista_ordenada) # Output: [1, 1, 2, 3, 4, 5, 6, 9] ``` **Parâmetros `key` e `reverse`** Ambas as funções `list.sort()` e `sorted()` aceitam os parâmetros opcionais `key` e `reverse` para personalizar o processo de ordenação: * **`key`**: Especifica uma função que será aplicada a cada elemento antes da comparação. O resultado dessa função é usado como chave para a ordenação. Isso é útil para ordenar objetos complexos com base em um atributo específico. ```python pessoas = [ ("Alice", 30), ("Bob", 25), ("Charlie", 35) ] # Ordenar por idade pessoas_ordenadas_por_idade = sorted(pessoas, key=lambda pessoa: pessoa[1]) print(pessoas_ordenadas_por_idade) # Output: [('Bob', 25), ('Alice', 30), ('Charlie', 35)] ``` * **`reverse`**: Um valor booleano que indica se a ordenação deve ser feita em ordem decrescente (`True`) ou crescente (`False`, padrão). ```python lista = [3, 1, 4, 1, 5, 9, 2, 6] lista_ordenada_decrescente = sorted(lista, reverse=True) print(lista_ordenada_decrescente) # Output: [9, 6, 5, 4, 3, 2, 1, 1] ``` **Exemplo combinado:** ```python palavras = ["maçã", "banana", "abacaxi", "uva"] # Ordenar por comprimento da palavra em ordem decrescente palavras_ordenadas = sorted(palavras, key=len, reverse=True) print(palavras_ordenadas) # Output: ['abacaxi', 'banana', 'maçã', 'uva'] ``` **Quando usar `list.sort()` vs. `sorted()`?** * Use `list.sort()` quando você precisa modificar a lista original e não precisa da lista original. É mais eficiente em termos de memória, pois não cria uma nova lista. * Use `sorted()` quando você precisa manter a lista original intacta e obter uma nova lista ordenada. **Referência:** * [How to sort — Python 3.11.0 documentation](https://docs.python.org/3/howto/sorting.html)