Listas são uma das estruturas de dados mais importantes de Python. Permitem armazenar múltiplos valores em uma única variável e são essenciais para qualquer desenvolvedor Python.

Diferente de arrays em outras linguagens, listas Python são dinâmicas - podem crescer ou diminuir durante a execução e podem conter elementos de diferentes tipos.

Criando Listas

Use colchetes para criar listas:

# Lista vazia
planetas = []

# Lista com elementos
linguagens = ["Python", "JavaScript", "Go", "Rust"]

# Lista com tipos misturados
dados = [1045, "texto", 3.14, True, None]

# Matriz (lista de listas)
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Para aprender sobre tipos de dados, veja o guia de variáveis e tipos de dados.

Acessando Elementos

Índices começam em zero. Use índices negativos para acessar do final:

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

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

Slicing (Fatiamento)

Extraia portions da lista usando início:fim:

print(frutas[1:4])  # ["banana", "laranja", "uva"]
print(frutas[:3])   # ["maçã", "banana", "laranja"]
print(frutas[3:])   # ["uva", "morango"]

Adicionando Elementos

numeros = [1, 2, 3]

# adiciona no final
numeros.append(4)
print(numeros)  # [1, 2, 3, 4]

# insere em posição específica
numeros.insert(0, 0)
print(numeros)  # [0, 1, 2, 3, 4]

# adiciona múltiplos elementos
numeros.extend([5, 6, 7])
print(numeros)  # [0, 1, 2, 3, 4, 5, 6, 7]

Removendo Elementos

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

# remove primeira ocorrência
cores.remove("azul")
print(cores)  # ["vermelho", "verde", "amarelo", "azul"]

# remove por índice
cor = cores.pop(0)
print(cor)  # vermelho

# remove último elemento
ultima = cores.pop()
print(ultima)  # azul

# limpa toda a lista
cores.clear()
print(cores)  # []

Métodos Úteis

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

# ordena (modifica a lista)
numeros.sort()
print(numeros)  # [1, 1, 2, 3, 4, 5, 5, 6, 9]

# inverte a ordem
numeros.reverse()
print(numeros)  # [9, 6, 5, 5, 4, 3, 2, 1, 1]

# conta ocorrências
print(numeros.count(5))  # 2

# encontra índice
print(numeros.index(9))  # 0

# tamanho da lista
print(len(numeros))  # 9

Iterando sobre Listas

planetas = ["Mercúrio", "Vênus", "Terra", "Marte", "Júpiter"]

# Iteração simples
for planeta in planetas:
    print(planeta)

# Com índice
for indice, planeta in enumerate(planetas):
    print(f"{indice + 1}. {planeta}")

List Comprehension

Crie listas de forma concisa:

# Números pares de 0 a 20
pares = [n for n in range(21) if n % 2 == 0]

# Quadrados de 0 a 9
quadrados = [n ** 2 for n in range(10)]

# Transformar strings
nomes = ["ANA", "pedro", "MARIA"]
formatados = [nome.capitalize() for nome in nomes]
print(formatados)  # ['Ana', 'Pedro', 'Maria']

Para aprender mais sobre list comprehension, veja nosso guia completo.

Projeto Prático: Sistema de Tarefas

tarefas = []

def adicionar_tarefa(descricao):
    tarefas.append(descricao)
    print(f"Tarefa adicionada: {descricao}")

def listar_tarefas():
    if not tarefas:
        print("Nenhuma tarefa pendente.")
        return
    print("\nTarefas:")
    for i, tarefa in enumerate(tarefas, 1):
        print(f"{i}. {tarefa}")

def remover_tarefa(indice):
    if 0 <= indice < len(tarefas):
        removida = tarefas.pop(indice)
        print(f"Removida: {removida}")
    else:
        print("Índice inválido.")

# Testar
adicionar_tarefa("Estudar Python")
adicionar_tarefa("Fazer exercícios")
adicionar_tarefa("Ler documentação")
listar_tarefas()
remover_tarefa(0)
listar_tarefas()

Quando Usar Listas

Listas são ideais quando:

  • A ordem dos elementos importa
  • Você precisa acessar elementos por posição
  • Precisa de operações de ordenação
  • Precisa de valores duplicados

Para acesso por chave, considere usar dicionários.

Listas são fundamentais em Python e aparecem em praticamente todos os projetos. Pratique bastante para dominar!