Python

Listas: criação, manipulação e métodos Já leu

4 min de leitura

Listas: criação, manipulação e métodos
Listas são a estrutura de dados mais utilizada em Python. Elas permitem armazenar múltiplos valores em uma única variável, de forma

Listas são a estrutura de dados mais utilizada em Python. Elas permitem armazenar múltiplos valores em uma única variável, de forma ordenada e mutável. Dominar listas é essencial — praticamente todo programa Python as utiliza de alguma forma.


Criando Listas

# Lista de strings
linguagens = ["Python", "JavaScript", "Go", "Rust"]

# Lista de inteiros
notas = [7, 8, 9, 10, 6]

# Lista mista
dados = ["Ricardo", 35, 1.78, True]

# Lista vazia
vazia = []

# Lista criada com range
sequencia = list(range(1, 6))
print(sequencia)  # [1, 2, 3, 4, 5]

Acessando Elementos

Listas usam índices baseados em zero. Python também suporta índices negativos — que contam a partir do final:

frutas = ["maçã", "banana", "laranja", "uva", "manga"]

print(frutas[0])   # maçã   — primeiro
print(frutas[2])   # laranja
print(frutas[-1])  # manga  — último
print(frutas[-2])  # uva    — penúltimo

Fatiamento (Slicing)

Extrair sublistas com a notação [start:stop:step]:

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numeros[2:6])    # [2, 3, 4, 5]
print(numeros[:4])     # [0, 1, 2, 3]
print(numeros[6:])     # [6, 7, 8, 9]
print(numeros[::2])    # [0, 2, 4, 6, 8] — de 2 em 2
print(numeros[::-1])   # [9, 8, 7, ..., 0] — invertida

O fatiamento nunca gera erro de índice — se o limite ultrapassar o tamanho da lista, Python simplesmente vai até o fim.


Modificando Listas

Listas são mutáveis — seus elementos podem ser alterados após a criação:

cores = ["vermelho", "verde", "azul"]

# Alterando um elemento
cores[1] = "amarelo"
print(cores)  # ['vermelho', 'amarelo', 'azul']

# Alterando um intervalo
cores[0:2] = ["rosa", "roxo"]
print(cores)  # ['rosa', 'roxo', 'azul']

Métodos Principais

lista = [3, 1, 4, 1, 5, 9, 2, 6]

# Adicionar ao final
lista.append(7)

# Inserir em posição específica
lista.insert(0, 0)       # insere 0 no índice 0

# Remover por valor
lista.remove(1)          # remove a primeira ocorrência de 1

# Remover por índice e retornar o valor
ultimo = lista.pop()     # remove e retorna o último
terceiro = lista.pop(2)  # remove e retorna o índice 2

# Ordenar in-place
lista.sort()
lista.sort(reverse=True)  # ordem decrescente

# Inverter in-place
lista.reverse()

# Contar ocorrências
print(lista.count(1))

# Localizar índice
print(lista.index(5))

# Limpar a lista
lista.clear()

Funções Nativas com Listas

notas = [7.5, 8.0, 9.5, 6.0, 10.0]

print(len(notas))    # 5    — quantidade de elementos
print(sum(notas))    # 41.0 — soma
print(min(notas))    # 6.0  — menor valor
print(max(notas))    # 10.0 — maior valor

# Ordenar sem modificar a original
ordenadas = sorted(notas)
ordenadas_desc = sorted(notas, reverse=True)

Copiando Listas

Um erro comum é tentar copiar uma lista com =:

original = [1, 2, 3]
copia = original       # não é uma cópia — é o mesmo objeto!

copia.append(4)
print(original)        # [1, 2, 3, 4] — original também mudou!

Para copiar corretamente:

# Forma 1 — método copy()
copia = original.copy()

# Forma 2 — fatiamento
copia = original[:]

# Forma 3 — construtor list()
copia = list(original)

List Comprehension

Uma das características mais elegantes do Python — cria listas de forma compacta e expressiva:

# Forma tradicional
quadrados = []
for i in range(1, 6):
    quadrados.append(i ** 2)

# Com list comprehension
quadrados = [i ** 2 for i in range(1, 6)]
print(quadrados)  # [1, 4, 9, 16, 25]

# Com filtro
pares = [i for i in range(20) if i % 2 == 0]
print(pares)  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# Transformando strings
nomes = ["ana", "bruno", "carla"]
maiusculos = [nome.upper() for nome in nomes]
print(maiusculos)  # ['ANA', 'BRUNO', 'CARLA']

Listas Aninhadas (Matrizes)

Listas podem conter outras listas — útil para representar matrizes ou tabelas:

matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matriz[1][2])  # 6 — linha 1, coluna 2

# Percorrendo uma matriz
for linha in matriz:
    for elemento in linha:
        print(elemento, end=" ")
    print()
# 1 2 3
# 4 5 6
# 7 8 9

Exemplo Completo: Sistema de Notas

def calcular_estatisticas(notas):
    """Calcula média, maior e menor nota de uma lista."""
    if not notas:
        return None

    media = sum(notas) / len(notas)
    aprovados = [n for n in notas if n >= 6.0]
    reprovados = [n for n in notas if n < 6.0]

    return {
        "total": len(notas),
        "media": round(media, 2),
        "maior": max(notas),
        "menor": min(notas),
        "aprovados": len(aprovados),
        "reprovados": len(reprovados),
    }

notas_turma = [8.5, 4.0, 7.0, 9.5, 5.5, 6.0, 3.0, 10.0]
stats = calcular_estatisticas(notas_turma)

for chave, valor in stats.items():
    print(f"{chave:>12}: {valor}")

Resumo

  • Listas são ordenadas, mutáveis e aceitam tipos mistos
  • Índices começam em zero; índices negativos contam do final
  • Fatiamento [start:stop:step] extrai sublistas com segurança
  • Principais métodos: append, insert, remove, pop, sort, reverse
  • Use .copy(), [:] ou list() para copiar — nunca apenas =
  • List comprehensions são a forma pythônica de criar e transformar listas
  • Listas aninhadas representam estruturas bidimensionais como matrizes

Referências e Leituras Complementares

Comentários

Mais em Python

Tratamento de Exceções e Erros
Tratamento de Exceções e Erros

Todo programa que interage com o mundo real encontra situa&ccedil;&otilde;es...

Decoradores e Metaprogramação
Decoradores e Metaprogramação

Decoradores s&atilde;o um dos recursos mais elegantes do Python. Eles permite...

Interfaces, Protocolos e Composição
Interfaces, Protocolos e Composição

No artigo anterior vimos que heran&ccedil;a &eacute; uma ferramenta poderosa...