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