8.1 Ordenação da lista
Ordenar listas no Python é uma operação importante que permite organizar dados para facilitar a análise ou apresentação. O Python oferece várias maneiras de ordenar listas, e cada uma pode ser útil dependendo da tarefa e dos resultados desejados.
Método sort()
O método sort() ordena a lista no lugar, ou seja, altera a lista original. Ele é muito eficiente e permite personalizar a ordenação através de argumentos.
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers) # Mostra [1, 2, 5, 9]
Você pode ordenar a lista em ordem decrescente definindo o parâmetro reverse=True.
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers) # Mostra [9, 5, 2, 1]
Função sorted()
A função sorted() cria uma nova lista que é uma versão ordenada da lista original. A lista original não é alterada, o que muitas vezes faz do sorted() a escolha preferida quando é necessário manter os dados originais inalterados.
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Mostra [1, 2, 5, 9]
print(numbers) # Lista original não alterada [5, 2, 9, 1]
É importante lembrar que sort() altera a lista original, enquanto sorted() retorna uma nova lista ordenada, deixando o original inalterado. Use sort() se precisar alterar os dados no local e sorted() se quiser manter a ordem dos dados originais.
8.2 Ordenação por chave
Às vezes, você precisa de cenários de ordenação mais complexos ou ordenar ignorando alguns parâmetros. Nesse caso, a "ordenção por chave" ajuda. Para usá-la, é necessário passar para o método sort() ou função sorted() um parâmetro especial — key.
Como valor do parâmetro key, você deve passar uma função que será usada para comparar os elementos.
Comparação de strings sem considerar maiúsculas e minúsculas
Antes da comparação, todas as strings são convertidas para minúsculas
alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist) # Mostra ['banana', 'cherry', 'Kiwi', 'Orange']
Exemplo de ordenação de lista de tuplas
Suponha que você tenha uma lista de estudantes, onde cada elemento é uma tupla (tuple) contendo o nome do estudante e sua nota. Você quer ordenar os estudantes pelas suas notas:
students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]
def get_grade(student):
return student[1]
students.sort(key=get_grade)
print(students) # Mostra [('Bob', 75), ('Alice', 88), ('Carol', 96)]
Exemplo de ordenação de lista de dicionários
Ou você tem uma lista de dicionários, onde cada dicionário contém informações sobre estudantes. Para ordená-los pelas notas, você deve escrever um código assim:
students = [
{'name': 'Alice', 'grade': 88},
{'name': 'Bob', 'grade': 75},
{'name': 'Carol', 'grade': 96}
]
def get_grade(student):
return student['grade']
sorted_students = sorted(students, key=get_grade)
print(sorted_students) # Mostra [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
GO TO FULL VERSION