As listas constituem uma das estruturas de dados mais versáteis disponíveis na linguagem Python. Elas permitem armazenar coleções ordenadas e modificáveis, suportando a coexistência de elementos com tipos heterogêneos, como números, cadeias de caracteres e até outras coleções. Cada item ocupa uma posição específica, acessível por meio de índices numéricos.
Inicialização e Construção
A definição de uma lista ocorre naturalmente por meio de colchetes. É possível instanciá-la vazia ou preencher diretamente com valores iniciais. Além disso, a função nativa list() converte outros iteráveis em sequências indexadas.
# Sequência com dados mistos
dados_mistos = [42, "processo", 9.81, False]
# Instância vazia
buffer = []
# Conversão de string para lista de caracteres
letras_separadas = list("python")
Recuperação de Dados por Índice e Fatiamento
A recuperação de itens segue a convenção zero-based. Índices positivos contam a partir do início, enquanto os negativos partem do final. O operador de fatiamento permite extrair subconjuntos contíguos.
sequencia = [100, 200, 300, 400, 500]
# Primeiro item
print(sequencia[0]) # 100
# Último item via índice negativo
print(sequencia[-1]) # 500
# Extrai do índice 1 até o 3 (exclusivo)
print(sequencia[1:3]) # [200, 300]
Atualização e Mutabilidade
Por serem mutáveis, as listas permitem a substituição direta de valores existentes utilizando a notação de atribuição por índice.
valores = [5, 15, 25]
valores[1] = 12 # Substitui o segundo elemento
print(valores) # [5, 12, 25]
Inserção e Remoção de Itens
O gerenciamento de tamanho dinâmico é realizado por métodos dedicados. A adição pode ocorrer no final ou em posições específicas, enquanto a remoção pode ser baseada em valor, posição ou limpar a coleção inteira.
estoque = [10, 20, 30]
# Adiciona ao final
estoque.append(40)
print(estoque) # [10, 20, 30, 40]
# Insere em posição definida
estoque.insert(2, 25)
print(estoque) # [10, 20, 25, 30, 40]
# Remove pela primeira ocorrência do valor
estoque.remove(20)
print(estoque) # [10, 25, 30, 40]
# Extrai e retorna o item do índice 1
item_extraido = estoque.pop(1)
print(item_extraido) # 25
print(estoque) # [10, 30, 40]
# Limpa completamente
estoque.clear()
print(estoque) # []
Contagem, Tamanho e Pesquisa
A função integrada len() retorna a quantidade total de elementos. Métodos como count() e index() auxiliam na análise e localização de dados específicos.
numeros = [2, 4, 2, 6, 8, 2]
print(len(numeros)) # 6
print(numeros.count(2)) # 3
print(numeros.index(6)) # 3
# numeros.index(9) # Acionaria ValueError
Ordenação e Inversão
A reorganização dos dados pode ser fieta in-place ou retornando novas sequências. A ordem padrão é crescente, mas pode ser invertida facilmente.
metricas = [7, 1, 9, 3, 0]
# Ordenação crescente in-place
metricas.sort()
print(metricas) # [0, 1, 3, 7, 9]
# Reversão da sequência atual
metricas.reverse()
print(metricas) # [9, 7, 3, 1, 0]
# Expansão com múltiplos itens de outra sequência
metricas.extend([5, 6])
print(metricas) # [9, 7, 3, 1, 0, 5, 6]
Estruturas Aninhadas
O Python permite a composição de listas dentro de outras listas, habilitando a criação de matrizes ou tabelas multidimensionais. O acesso exige múltiplas indexações sequenciais.
grade = [
["A1", "B1", "C1"],
["A2", "B2", "C2"],
["A3", "B3", "C3"]
]
print(grade[0][1]) # B1
print(grade[2][0]) # A3