0Pricing
Python Academy · Aula

Correspondência de sequências e mapeamentos

Desestruture listas e dicionários

Correspondência de sequências e mapeamentos é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Padrões que desestruturam

O verdadeiro poder de match está na desestruturação. Os padrões de sequência e de mapeamento permitem verificar a forma dos dados e extrair valores ao mesmo tempo.

Correspondência com uma lista de tamanho fixo

Um padrão de sequência entre colchetes corresponde a uma lista ou tupla com exatamente esse tamanho, associando cada elemento a um nome.

point = [3, 4]

match point:
    case [x, y]:
        print('x =', x, 'y =', y)

O tamanho deve corresponder

Um padrão com dois elementos não corresponde a uma sequência com três elementos. Cada caso verifica tanto a estrutura quanto o tamanho.

data = [1, 2, 3]

match data:
    case [a, b]:
        print('pair')
    case [a, b, c]:
        print('triple:', a, b, c)

Combinando literais e capturas

Você pode fixar algumas posições como literais e capturar outras. Isso corresponde apenas a sequências que começam com o literal fornecido.

command = ['move', 10, 20]

match command:
    case ['move', dx, dy]:
        print('moving by', dx, dy)
    case ['stop']:
        print('stopping')

Capturando o restante com *

Um nome precedido por asterisco captura quaisquer elementos restantes como uma lista, de forma semelhante ao desempacotamento estendido.

items = [1, 2, 3, 4, 5]

match items:
    case [first, *rest]:
        print('first:', first)
        print('rest:', rest)

Padrões vazios e unitários

Os padrões de sequência tratam os casos extremos de forma clara: uma lista vazia, um único elemento ou muitos elementos.

def describe(seq):
    match seq:
        case []:
            return 'empty'
        case [x]:
            return 'one: ' + str(x)
        case [x, *rest]:
            return 'many, first ' + str(x)

print(describe([]))
print(describe([9]))
print(describe([1, 2, 3]))

Correspondência com dicionários

Um padrão de mapeamento usa chaves. Ele verifica se as chaves fornecidas estão presentes e associa seus valores. Chaves adicionais no assunto são permitidas.

event = {'type': 'click', 'x': 10, 'y': 20}

match event:
    case {'type': 'click', 'x': x, 'y': y}:
        print('click at', x, y)

Correspondência parcial de chaves

Um padrão de mapeamento exige apenas as chaves que você listar. As outras chaves são ignoradas, o que é ótimo para mensagens com campos opcionais.

event = {'type': 'key', 'code': 'A', 'extra': 1}

match event:
    case {'type': 'key', 'code': code}:
        print('key pressed:', code)

Capturando as chaves restantes

Use **rest para capturar todos os pares chave-valor não correspondentes em um dicionário.

event = {'type': 'move', 'dx': 5, 'dy': 7}

match event:
    case {'type': 'move', **rest}:
        print('move details:', rest)

Aninhando padrões

Os padrões podem ser aninhados livremente. Você pode corresponder a um dicionário que contenha uma lista, desestruturando ambos ao mesmo tempo.

data = {'name': 'grid', 'size': [3, 4]}

match data:
    case {'name': name, 'size': [w, h]}:
        print(name, 'is', w, 'by', h)

Strings não são sequências aqui

Os padrões de sequência deliberadamente não correspondem a strings ou sequências de bytes, embora sejam iteráveis. Isso impede que uma string seja desestruturada acidentalmente caractere por caractere.

value = 'hi'

match value:
    case [a, b]:
        print('matched as sequence')
    case str():
        print('matched as string')

Verificação rápida

O que o padrão [first, *rest] associa ao corresponder a [1, 2, 3, 4]?

Recapitulação

Você aprendeu a desestruturar listas e dicionários.

  • Os padrões de sequência verificam o tamanho e associam os elementos.
  • *rest captura os itens restantes da lista.
  • Os padrões de mapeamento correspondem às chaves; chaves adicionais são permitidas.
  • **rest captura os pares restantes do dicionário; os padrões podem ser aninhados.

Perguntas Frequentes

A aula “Correspondência de sequências e mapeamentos” é grátis?

Sim — o texto completo de “Correspondência de sequências e mapeamentos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Correspondência de sequências e mapeamentos”?

Desestruture listas e dicionários Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Correspondência de sequências e mapeamentos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Noções básicas de match e case
  2. Correspondência de sequências e mapeamentos
  3. Padrões de classes
  4. Guardas e curingas
← Voltar para Python Academy