Especialização em Sistemas com Python & POO com Type Hints • Capítulo 13


🗺️ Mapa Conceitual do Tópico

flowchart TD
    A["Coleções Baseadas em Hash (O(1))"] --> B["Conjuntos (set): Teoria dos Conjuntos"]
    A --> C["Dicionários (dict): Mapeamento Chave-Valor"]
    A --> D["Generics: Generic[T] e TypeVar"]
    
    B --> E["Operações: União (|), Interseção (&), Diferença (-)"]
    C --> F["Indexação e Agrupamento O(1)"]
    D --> G["Estruturas Reutilizáveis e Tipadas"]
    
    style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
    style B fill:#fff3e0,stroke:#ff9800,stroke-width:2px
    style C fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
    style D fill:#e8f5e9,stroke:#4caf50,stroke-width:2px

🗄️ 1. Tabelas Hash e Complexidade $O(1)$

  • Conjuntos (set): Coleções de elementos únicos com busca e operações matemáticas (|, &, -, ^) em tempo médio constante $O(1)$.
  • Dicionários (dict): Tabelas hash de alta performance mantendo ordem de inserção desde o Python 3.7+.
  • Generics (Generic[T]): Permite criar classes parametrizadas para qualquer tipo de dado sem perda de segurança estática.

💻 Exemplo Prático e Tipado

"""
exemplo_13_generics_sets_e_dicionarios.py - Pilha Genérica Tipada
"""

from typing import Generic, TypeVar

T = TypeVar("T")


class PilhaGenerica(Generic[T]):
    def __init__(self) -> None:
        self._itens: list[T] = []

    def push(self, item: T) -> None:
        self._itens.append(item)

    def pop(self) -> T:
        if not self._itens:
            raise IndexError("Pilha vazia.")
        return self._itens.pop()

    def esta_vazia(self) -> bool:
        return len(self._itens) == 0


if __name__ == "__main__":
    pilha_str: PilhaGenerica[str] = PilhaGenerica()
    pilha_str.push("Primeiro")
    pilha_str.push("Segundo")
    print(f"Desempilhado: {pilha_str.pop()}")

🔗 Recursos Pedagógicos do Capítulo 13

Recurso Didático Finalidade Link de Acesso
📊 Slides de Aula Apresentação visual interativa com Dark Mode e suporte a teclado Ver Slides
🧠 Quiz Formativo Teste interativo de fixação com feedback imediato por alternativa Fazer Quiz
💻 Exemplos de Código Demonstrações funcionais com Type Hints e saída no console Ver Exemplos
🧩 Exercícios em 4 Níveis Lista progressiva de fixação com gabarito em bloco colapsável Resolver Exercícios

📁 Capítulo Anterior 📚 Sumário de Tópicos λ Próximo Capítulo