Trilha de aprendizado · Nível 3 · Tutorial 2

Organizar e atualizar dados em listas

Criar listas para reunir dados ordenados, consultar seus elementos e modificar seu conteúdo usando operações adequadas.

  • Nível: Iniciante
  • Duração: 24 min
  • 8 passos
Organizar e atualizar dados em listas

O que você vai percorrer

  1. Reunir valores em uma lista Crie listas com colchetes e com list, preservando a ordem e os valores repetidos. 3 min
  2. Consultar elementos e trechos Use índices, fatias e len para consultar listas e distinguir um elemento de uma lista de elementos. 3 min
  3. Substituir um elemento Atualize uma posição existente da lista sem alterar seu tamanho nem os outros elementos. 2 min
  4. Adicionar elementos com append e extend Acrescente um valor ou um lote de valores ao final de uma lista e diferencie a alteração feita do retorno do método. 4 min
  5. Verificar presença e lista vazia Teste se um valor está na lista e escolha ações conforme a presença ou a ausência de elementos. 2 min
  6. Remover por posição ou por valor Escolha entre pop, remove e del, acompanhe o conteúdo restante e use verificações antes de remover. 4 min
  7. Construir uma lista de resultados com for Percorra uma lista, selecione valores e acrescente resultados calculados a outra lista, preservando os dados de origem. 3 min
  8. Aplicar e revisar: atualizar uma lista de atividades Execute uma atualização completa de durações no seu Python e confira o conteúdo da lista, os retornos das operações e os resultados do laço. 5 min

O que você vai aprender

  • Criar listas com literais e converter textos ou intervalos em listas.
  • Consultar itens e trechos aplicando os índices e as fatias já aprendidos.
  • Substituir, adicionar e remover elementos sem confundir a alteração da lista com o retorno de um método.
  • Verificar pertencimento e identificar listas vazias em condições.
  • Construir uma lista de resultados durante o percurso de outra sequência.

Antes de começar

  • Acessar e recortar textos com índices e fatias
  • Percorrer textos e intervalos com for e range
  • Selecionar caminhos com if, elif e else

Passo 1 de 8

Reunir valores em uma lista

Crie listas com colchetes e com list, preservando a ordem e os valores repetidos.

Vários valores, uma lista

Uma lista reúne elementos em uma sequência. Para criá-la, escreva os valores entre colchetes, separados por vírgulas. Use [] para uma lista vazia.

A lista mantém a ordem informada e aceita repetições: não coloca os valores em ordem crescente automaticamente. Ela também é mutável: seu conteúdo pode ser alterado depois.

Criar com colchetes

Os comentários mostram o que cada print exibe.

python
duracoes = [30, 10, 30]
atividades = ["ler", "caminhar"]
pendencias = []

print(duracoes)    # [30, 10, 30]
print(atividades)  # ['ler', 'caminhar']
print(pendencias)  # []

Ordenada não significa organizada por tamanho

Ao executar duracoes = [30, 10, 30], o Python cria a lista [10, 30, 30].

Transformar uma sequência em lista

Você também pode usar list(...) para reunir os elementos de uma sequência.

  • Com um texto, cada caractere vira um elemento, inclusive os espaços. O texto não é separado em palavras.
  • Com um range, os números do intervalo viram elementos da lista, na ordem produzida pelo range.

De texto e intervalo para listas

python
caracteres = list("oi oi")
numeros = list(range(2, 5))

print(caracteres)  # ['o', 'i', ' ', 'o', 'i']
print(numeros)     # [2, 3, 4]

Cada elemento mantém seu lugar

Diagrama com duas conversões. Os cinco caracteres de “oi oi”, incluindo o espaço central, correspondem a cinco elementos de uma lista. Os números 2, 3 e 4 produzidos por range(2, 5) correspondem a três elementos de outra lista.

Cada seta liga um elemento da origem ao elemento correspondente na lista. O espaço também ocupa um lugar.

Associe a criação ao resultado

Associe cada expressão à lista que ela produz.

Toque em um item e depois no par correspondente.

Passo 2 de 8

Consultar elementos e trechos

Use índices, fatias e len para consultar listas e distinguir um elemento de uma lista de elementos.

Um elemento ou um trecho?

Os índices e as fatias que você usou em textos também funcionam em listas. A diferença está no resultado: um índice consulta um elemento, como um número ou um texto; uma fatia obtém uma lista de elementos. Essas consultas não alteram a lista original.

Posições e resultados

A lista dados contém 15, 'pausa', 30 e 10 nos índices 0, 1, 2 e 3. A consulta dados[1] aponta para o texto 'pausa'. A consulta dados[1:3] aponta para a lista ['pausa', 30].

O índice entrega o elemento; a fatia entrega uma lista com o trecho consultado.

Consultas sem alteração

len informa quantos elementos a lista contém, não quantos caracteres existem nos textos dentro dela.

python
dados = [15, "pausa", 30, 10]

print(dados[0])     # 15
print(dados[1])     # pausa
print(dados[-1])    # 10
print(dados[1:3])   # ['pausa', 30]
print(len(dados))   # 4
print(dados)        # [15, 'pausa', 30, 10]

Compare as consultas

Considere dados = [15, "pausa", 30, 10]. Quais são os resultados de dados[1] e dados[1:2], nessa ordem?

Trechos com um ou nenhum elemento

Uma fatia sempre resulta em uma lista, mesmo quando o trecho tem só um elemento ou está vazio. Use len no resultado para conferir a quantidade de elementos selecionados.

Os colchetes fazem diferença

Compare o número 10, a lista [10] e a lista vazia [].

python
dados = [15, "pausa", 30, 10]

print(dados[3])           # 10
print(dados[3:4])         # [10]
print(len(dados[3:4]))    # 1

print(dados[4:4])         # []
print(len(dados[4:4]))    # 0

print(len(dados))         # 4: a lista original não mudou

Associe consulta e resultado

Para valores = [8, 3, 8], associe cada consulta ao resultado correspondente.

Toque em um item e depois no par correspondente.

Passo 3 de 8

Substituir um elemento

Atualize uma posição existente da lista sem alterar seu tamanho nem os outros elementos.

Trocar o conteúdo de uma posição

Uma lista é mutável: podemos alterar seu conteúdo. Para substituir um elemento, escreva a posição à esquerda do sinal de igual e o novo valor à direita: lista[indice] = novo_valor.

A substituição mantém o comprimento da lista e não muda os outros elementos.

Corrigir uma duração

python
duracoes = [20, 35, 15]
duracoes[1] = 30

print(duracoes)  # [20, 30, 15]
print(len(duracoes))  # 3
Comparação entre as listas [20, 35, 15] e [20, 30, 15]. Somente o valor no índice 1 muda de 35 para 30; os índices 0 e 2 permanecem iguais.

O valor 30 ocupa o lugar de 35. A lista continua com três elementos.

Escolha a posição

Corrija somente a última duração

Complete o índice para substituir 40 por 45:

duracoes = [10, 25, 40]
duracoes[___] = 45

A lista deve ficar [10, 25, 45].

A posição precisa existir

Substituir não é acrescentar. Se a posição indicada não existir, a atribuição provoca IndexError, assim como uma consulta fora dos limites.

Uma tentativa inválida

Esta lista tem três posições: 0, 1 e 2.

python
duracoes = [10, 25, 40]
duracoes[3] = 45  # IndexError: a posição 3 não existe

Atenção

Usar um índice igual ao comprimento da lista não cria uma nova posição. A tentativa acima falha: nenhum elemento é acrescentado ou substituído.

Preveja o resultado

Depois deste código, qual é o conteúdo de duracoes e quantos elementos ela tem?

duracoes = [10, 25, 40]
duracoes[0] = 15

Passo 4 de 8

Adicionar elementos com append e extend

Acrescente um valor ou um lote de valores ao final de uma lista e diferencie a alteração feita do retorno do método.

Um elemento ou um lote?

Dois métodos para acrescentar

Um método é uma operação disponível em um valor. Para chamá-lo, use um ponto, o nome do método e os argumentos entre parênteses: valor.metodo(argumentos).

Nas listas, append(valor) acrescenta um elemento ao final. Já extend(sequencia) acrescenta cada elemento de outra sequência, na ordem em que aparece. Aqui, vamos usar outra lista como sequência.

A lista cresce pelo final

Acompanhe as duas alterações na mesma lista de durações, em minutos.

python
duracoes = [15, 20]

duracoes.append(10)
print(duracoes)  # [15, 20, 10]

duracoes.extend([5, 25])
print(duracoes)  # [15, 20, 10, 5, 25]

O que cada chamada acrescenta

Três estados da lista: primeiro [15, 20]; depois de append(10), [15, 20, 10]; depois de extend([5, 25]), [15, 20, 10, 5, 25]. Cada número ocupa uma posição separada.

append acrescenta um elemento; extend acrescenta os dois elementos do lote. Os valores anteriores mantêm suas posições.

Escolha a operação

Acrescentar duas durações

A lista é duracoes = [15, 20]. Qual linha a altera para [15, 20, 10, 5]?

Alterar não é devolver a lista

O retorno é None

append e extend alteram a lista, mas não devolvem a lista atualizada: ambos retornam None.

Separe a chamada que altera os dados da consulta ao conteúdo. No exemplo, guardamos os retornos em outros nomes apenas para mostrar essa diferença.

Conteúdo e retorno lado a lado

python
duracoes = [15, 20]

retorno_append = duracoes.append(10)
print(retorno_append)  # None
print(duracoes)       # [15, 20, 10]

retorno_extend = duracoes.extend([5, 25])
print(retorno_extend)  # None
print(duracoes)        # [15, 20, 10, 5, 25]

Atenção

Não atribua o retorno ao nome da lista

Evite duracoes = duracoes.append(10) e duracoes = duracoes.extend([5, 25]). A alteração acontece, mas a atribuição faz duracoes passar a valer None.

Para continuar acessando a lista por esse nome, chame o método sem essa atribuição e depois consulte duracoes.

Corrija a atualização

Um resultado inesperado

A intenção era mostrar [15, 20, 5], mas este código mostra None.

python
duracoes = [15, 20]
duracoes = duracoes.append(5)
print(duracoes)

Como você corrigiria?

Por que duracoes termina com o valor None? Reescreva apenas a segunda linha para que, ao executar o código completo novamente, ele mostre a lista atualizada.

Escreva pelo menos 20 caracteres (0/20).

Passo 5 de 8

Verificar presença e lista vazia

Teste se um valor está na lista e escolha ações conforme a presença ou a ausência de elementos.

O valor está na lista?

Use in para verificar se um valor corresponde a algum elemento da lista. Use not in para verificar se ele está ausente.

Quando os elementos são textos, a busca considera cada elemento inteiro, não partes dele.

Buscar um elemento inteiro

Os comentários mostram os resultados.

python
atividades = ["ler livro", "caminhar"]

print("caminhar" in atividades)      # True
print("ler" in atividades)           # False
print("ler livro" in atividades)     # True
print("estudar" not in atividades)   # True

Incluir apenas se estiver ausente

Complete a condição para evitar incluir novamente um valor que já está na lista:

atividades = ["ler livro", "caminhar"]
nova = "caminhar"

if nova ____ atividades:
    atividades.append(nova)

Há algum elemento?

Em uma condição, [] é falsa e qualquer lista não vazia é verdadeira. O que importa é haver elementos: [0] é verdadeira, embora o número 0 sozinho seja falso.

Use if lista para agir quando houver elementos e if not lista para agir quando ela estiver vazia.

Decisão pelo conteúdo da lista

Fluxo com a pergunta “Há elementos?”. A lista [0] segue pelo caminho Sim até a ação de if lista. A lista [] segue pelo caminho Não até a ação de if not lista.

Um único elemento, mesmo que seja zero, já torna a lista não vazia.

Duas verificações

Neste código, as duas mensagens são exibidas.

python
duracoes = [0]
if duracoes:
    print("Há durações registradas.")

pendencias = []
if not pendencias:
    print("Não há pendências.")

Zero não é ausência

O código abaixo exibirá a mensagem "Sem dados".

duracoes = [0]
if not duracoes:
    print("Sem dados")

Passo 6 de 8

Remover por posição ou por valor

Escolha entre pop, remove e del, acompanhe o conteúdo restante e use verificações antes de remover.

O que sai da lista e o que a chamada devolve

pop(indice) remove e retorna o elemento da posição indicada. Sem argumento, pop() remove e retorna o último elemento.

remove(valor) procura o valor e elimina apenas sua primeira ocorrência. A lista muda, mas o retorno é None.

Após uma remoção, os elementos seguintes se deslocam: seus índices diminuem em 1.

Mesma lista inicial, critérios diferentes

Compare o retorno guardado em cada variável com a lista que ficou.

python
valores = [10, 20, 10, 30]
retirado = valores.pop(1)
print(retirado)  # 20
print(valores)   # [10, 10, 30]

valores = [10, 20, 10, 30]
retorno = valores.remove(10)
print(retorno)  # None
print(valores)  # [20, 10, 30]

As posições se ajustam

Comparação de duas remoções na lista [10, 20, 10, 30]. pop(1) retira 20 e deixa [10, 10, 30], retornando 20. remove(10) retira o primeiro 10 e deixa [20, 10, 30], retornando None. Nas listas finais, os índices são 0, 1 e 2.

O segundo 10 permanece após remove(10). Em ambos os casos, a lista passa de quatro para três elementos.

Acompanhe duas remoções

Leia o código e preveja os resultados antes de executá-lo no seu Python, se quiser conferir.

python
tarefas = ["ler", "revisar", "ler", "enviar"]
retorno = tarefas.remove("ler")
print(tarefas)
ultimo = tarefas.pop()
print(tarefas)
print(retorno)
print(ultimo)

Qual conteúdo permanece?

Informe a lista logo após remove e depois de pop. Quais valores ficam em retorno e ultimo?

Escreva pelo menos 20 caracteres (0/20).

Excluir sem guardar e verificar antes

del: posição, sem retorno

del lista[indice] exclui o elemento dessa posição. É uma instrução, não um método: não usa ponto e não devolve o elemento para uma atribuição. Se você precisa guardar o elemento removido, use pop.

Verificações antes dos métodos

Use as condições já conhecidas para evitar uma remoção impossível.

python
tarefas = ["ler", "revisar"]
if tarefas:
    ultima = tarefas.pop()
    print(ultima)  # revisar

if "ler" in tarefas:
    tarefas.remove("ler")
print(tarefas)  # []

valores = [10, 20, 30]
del valores[1]  # O índice 1 existe nesta lista.
print(valores)  # [10, 30]

Atenção

Cada remoção tem uma condição

Antes de pop() sem argumento, confira se a lista não está vazia. Antes de remove(valor), confira se o valor pertence à lista; se não pertencer, ocorre ValueError.

Para pop(indice) e del lista[indice], o índice precisa existir no momento da remoção; caso contrário, ocorre IndexError. Uma lista não vazia não garante que qualquer índice seja válido.

Escolha pela intenção

Associe cada intenção à operação ou à verificação adequada. Considere que indice é válido nas remoções por posição.

Toque em um item e depois no par correspondente.

Passo 7 de 8

Construir uma lista de resultados com for

Percorra uma lista, selecione valores e acrescente resultados calculados a outra lista, preservando os dados de origem.

Uma lista para guardar os resultados

Assim como um acumulador começa antes do laço, a lista de resultados começa vazia antes do for. A cada passagem, a variável ponto recebe um elemento de pontos, e append guarda o valor calculado no final de outra lista.

Calcular o dobro de cada valor

O laço consulta pontos e altera apenas dobros.

python
pontos = [8, 3, 6]
dobros = []

for ponto in pontos:
    dobros.append(ponto * 2)

print(dobros)  # [16, 6, 12]
print(pontos)  # [8, 3, 6]

Dica

Não reinicie dentro do laço

Se dobros = [] ficar dentro do for, os resultados anteriores serão descartados a cada passagem. Inicialize antes; acrescente dentro.

Organize a construção

Coloque em ordem as etapas para construir uma lista com o dobro de cada valor de uma lista de origem já criada.

  1. Criar uma lista de resultados vazia antes do laço.
  2. Iniciar o for para percorrer os elementos da origem.
  3. Em cada passagem, calcular o dobro do elemento atual.
  4. Acrescentar o valor calculado à lista de resultados.

Selecionar antes de acrescentar

Para guardar apenas alguns resultados, coloque um if antes do append. Se a condição for falsa, nada é acrescentado naquela passagem. Os resultados incluídos seguem a ordem do percurso, sem ordenar os valores.

Dobrar somente os pontos maiores ou iguais a 5

python
pontos = [8, 3, 6]
dobros = []

for ponto in pontos:
    if ponto >= 5:
        dobros.append(ponto * 2)

print(dobros)  # [16, 12]
print(pontos)  # [8, 3, 6]

A lista cresce só quando a condição é verdadeira

Rastreamento: dobros começa como []. Ao ler 8, passa a [16]; ao ler 3, continua [16]; ao ler 6, passa a [16, 12]. A origem permanece [8, 3, 6].

O 3 não gera resultado. O 16 aparece antes do 12 porque o 8 foi percorrido antes do 6.

Preveja as duas listas

Leia o código e preveja as saídas sem executá-lo.

python
valores = [4, 9, 2, 6]
resultados = []

for valor in valores:
    if valor >= 6:
        resultados.append(valor + 1)

print(resultados)
print(valores)

O que cada print mostrará? Escreva as duas listas e explique por que a lista de origem permanece inalterada.

Escreva pelo menos 20 caracteres (0/20).

Passo 8 de 8

Aplicar e revisar: atualizar uma lista de atividades

Execute uma atualização completa de durações no seu Python e confira o conteúdo da lista, os retornos das operações e os resultados do laço.

Execute a atualização no seu Python

Uma lista de durações

As atividades são representadas por suas durações em minutos. No seu Python, execute o código abaixo: ele consulta dados, corrige a segunda duração, inclui novas atividades e faz três remoções com critérios diferentes.

Depois, o laço seleciona durações de pelo menos 25 minutos e as converte em segundos em outra lista. Antes de executar, tente prever a lista final e o valor devolvido por pop.

Consultar, atualizar e construir resultados

As consultas iniciais acontecem antes das alterações. Na remoção com del, o índice 0 é válido porque ainda há elementos na lista.

python
duracoes = [20, 15, 30, 15]

print("Primeira:", duracoes[0])
print("Trecho:", duracoes[1:3])

duracoes[1] = 25
retorno_append = duracoes.append(10)
duracoes.extend([40, 5])

if 15 in duracoes:
    duracoes.remove(15)

if duracoes:
    removido = duracoes.pop()
    print("Removido por pop:", removido)

del duracoes[0]
print("Atualizada:", duracoes)
print("Retorno de append:", retorno_append)

segundos = []
for minutos in duracoes:
    if minutos >= 25:
        segundos.append(minutos * 60)

print("Selecionadas em segundos:", segundos)
print("Origem depois do laço:", duracoes)

Relate e explique o resultado

O que mudou e o que foi devolvido?

Após executar o código, registre:

  1. A lista atualizada, o valor devolvido por pop e a lista em segundos.
  2. Por que remove(15) é adequado para excluir a duração 15, mas pop(15) não seria?
  3. O retorno None de append significa que a inclusão falhou? Explique.
  4. A lista duracoes permaneceu igual durante o laço? Use a saída para justificar.

Escreva pelo menos 80 caracteres (0/80).

Confira com a referência

Saída esperada

Se sua saída for diferente, execute novamente desde a criação de duracoes. Assim, as alterações não serão reaplicadas a uma lista já modificada.

text
Primeira: 20
Trecho: [15, 30]
Removido por pop: 5
Atualizada: [25, 30, 10, 40]
Retorno de append: None
Selecionadas em segundos: [1500, 1800, 2400]
Origem depois do laço: [25, 30, 10, 40]

Seleção não é remoção

A condição do laço controla quais resultados entram em segundos. Ela não remove nada de duracoes. Por isso, 10 continua na origem, enquanto os demais valores geram resultados na mesma ordem do percurso.

Da lista atualizada aos resultados

À esquerda, a lista de origem contém 25, 30, 10 e 40. Setas ligam 25 a 1500, 30 a 1800 e 40 a 2400 na lista de resultados à direita. O valor 10 permanece na origem, sem gerar resultado.

O filtro seleciona valores maiores ou iguais a 25; a multiplicação por 60 converte minutos em segundos sem alterar a origem.

Revisão: escolha pela intenção

Resumo

Organizar e atualizar dados em listas

Use o objetivo da operação para escolher a ferramenta.

  • Criar: colchetes reúnem valores; list converte uma sequência, como um texto em caracteres ou um range em seus valores, preservando a ordem.
  • Consultar: um índice obtém um elemento; uma fatia obtém uma lista; len informa a quantidade de elementos.
  • Atualizar: a atribuição a um índice existente substitui; append acrescenta um elemento; extend acrescenta os elementos de outra sequência.
  • Remover: pop usa uma posição e devolve o elemento; remove elimina a primeira ocorrência de um valor; del exclui uma posição sem devolver o elemento.
  • Conferir: append, extend e remove alteram a lista e retornam None. Não atribua esse retorno ao nome da lista.
  • Decidir e construir: in e not in verificam pertencimento; if lista e if not lista distinguem presença e ausência de elementos. Um for pode selecionar e transformar valores em uma lista separada, sem alterar a origem.

Tutorial concluído

Parabéns! Você concluiu: Organizar e atualizar dados em listas

Você praticou um fluxo completo: consultar, corrigir, acrescentar, remover e construir resultados. Ao atualizar uma lista, confira sempre duas coisas: como ficou seu conteúdo e o que a operação devolveu.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso