Introdução às Listas em Python
Em Python, as listas são estruturas de dados ordenadas, mutáveis e que permitem elementos duplicados, essenciais para armazenar coleções de itens. Elas são extremamente versáteis e fundamentais em muitas aplicações.
Criação de Listas
Uma lista pode ser definida usando colchetes, com elementos separados por vírgulas.
lista_principal = [10, 20, 30, 40, 50]
Acesso via Índices e Fatiamento
Elementos individuais ou sublistas podem ser acessados usando índices (começando em 0) ou fatiamento.
primeiro_elemento = lista_principal[0] # Resultado: 10
sublista = lista_principal[1:3] # Resultado: [20, 30]
Obtenção do Comprimento
A função len() retorna o número de elementos na lista.
quantidade = len(lista_principal) # Resultado: 5
Modificação de Elementos
Listas podem ser alteradas de várias maneiras:
- Adição no final: Use o método
append().
lista_principal.append(60)
- Inserção em posição específica: Use
insert().
lista_principal.insert(1, 15)
- Remoção de elemantos: Pode-se usar
del,remove()oupop().
del lista_principal[0]
lista_principal.remove(30)
item_removido = lista_principal.pop(1)
- Limpeza completa: O método
clear()esvazia a lista.
lista_principal.clear()
Iteração sobre Listas
Para percorrer cada elemento, utilize um loop for.
for elemento in lista_principal:
print(elemento)
Métodos Úteis de Listas
Python oferece métodos integrados para operações comuns:
lista_principal.sort() # Ordena os elementos
lista_principal.reverse() # Inverte a ordem
contagem = lista_principal.count(20) # Conta ocorrências
List Comprehensions
Uma forma concisa de criar listas, como gerar quadrados de números.
quadrados = [n ** 2 for n in range(1, 6)] # Resultado: [1, 4, 9, 16, 25]
Erros Comuns e Correções em Listas
Ao manipular listas, certos erros são frequentes. Veja exemplos revisados:
Erro ao Tentar Modificar Strings In-Place
Strings são imutáveis; métodos como replace() criam novas strings em vez de alterar as originais.
nomes = ["Ana", "Beatriz", "Carlos", "Diogo"]
for nome in nomes:
if nome.startswith("A"):
# Incorreto: nome.replace("A", "B") não altera a lista
nome_corrigido = nome.replace("A", "B")
print(nome_corrigido) # Imprime "Bna"
print(nomes) # Lista original não muda
Para atualizar a lista, atribua o novo valor ao índice correto.
for i in range(len(nomes)):
if nomes[i].startswith("A"):
nomes[i] = nomes[i].replace("A", "B")
print(nomes)
Erro ao Usar Strings como Índices
Listas requerem índices inteiros; use index() para encontrar a posição de um elemento.
valores = ["x", "y", "z"]
# Incorreto: valores["y"] causa TypeError
posicao = valores.index("y") # Correto: retorna 1
valores[posicao] = "Y"
print(valores) # Resultado: ["x", "Y", "z"]
Problemas ao Remover Elementos durante Iteração
Remover elementos de uma lista enquanto a itera pode pular itens. Uma abordagem segura é criar uma nova lista.
numeros = [1, 2, 3, 4, 5]
# Tentativa incorreta de remover pares
for num in numeros:
if num % 2 == 0:
numeros.remove(num) # Pode não remover todos
print(numeros) # Resultado imprevisível
# Correção: lista auxiliar
numeros_filtrados = []
for num in numeros:
if num % 2 != 0:
numeros_filtrados.append(num)
numeros = numeros_filtrados
print(numeros) # Resultado: [1, 3, 5]
Ordenação Personalizada
Por padrão, listas de strings são ordenadas por código Unicode. Para critérios específicos, use o parâmetro key.
palavras = ["banana", "maçã", "laranja", "uva"]
palavras.sort(key=len) # Ordena por comprimento
print(palavras) # Resultado: ["uva", "maçã", "banana", "laranja"]