Com a lista abaixo, responder as questões 1, 2, 3 e 4.
lista =[4,8,12,14,16,2,5,18,3,10,11,19,7,13,1]
Pesquise sobre a função “list.insert()” de listas em Python. Crie uma função que receba uma lista, um índice e um valor. Antes de qualquer alteração, verifique se esse valor já está presente na lista. Se o valor não estiver presente, use o método “list.insert()” para adicionar o valor no índice especificado. A função deve então retornar a lista modificada. Se o valor já estiver presente, a função deve retornar uma mensagem informando que ‘O valor [valor] já existe na lista e não foi adicionado’.
lista =[4,8,12,14,16,2,5,18,3,10,11,19,7,13,1]
Pesquise sobre a função “list.insert()” de listas em Python. Crie uma função que receba uma lista, um índice e um valor. Antes de qualquer alteração, verifique se esse valor já está presente na lista. Se o valor não estiver presente, use o método “list.insert()” para adicionar o valor no índice especificado. A função deve então retornar a lista modificada. Se o valor já estiver presente, a função deve retornar uma mensagem informando que ‘O valor [valor] já existe na lista e não foi adicionado’.
Passo 1
O enunciado pede que eu faça o seguinte com a lista abaixo:
lista = [4,8,12,14,16,2,5,18,3,10,11,19,7,13,1]
lista = [4,8,12,14,16,2,5,18,3,10,11,19,7,13,1]
As tarefas são:
- Pesquisar/explicar a função “list.insert()” de listas em Python.
- Criar uma função que receba uma lista, um índice e um valor, e que antes de alterar verifique se o valor já está presente na lista.
- Se o valor não estiver presente, usar o método “list.insert()” para adicionar o valor no índice especificado.
- A função deve retornar a lista modificada. Se o valor já existir, deve retornar a mensagem “O valor [valor] já existe na lista e não foi adicionado”.
Não há outras restrições explícitas (por ex. se a função deve copiar a lista ou modificar in-place). Vou implementar seguindo exatamente o pedido: checar presença, usar list.insert() e retornar a lista modificada; se já existir, retornar a mensagem no formato solicitado.
Passo 2
O que é e como funciona o método list.insert():
- Assinatura: list.insert(index, object).
- O que faz: insere o elemento object na lista na posição index. Não substitui nem remove elementos; desloca os elementos a partir de index para a direita.
- Retorno: o método modifica a lista no lugar (in-place) e devolve None. Ou seja, não retorna a nova lista — ele altera a lista original.
- Comportamento com índices fora do intervalo:
- Se index for maior que o comprimento da lista, o elemento é adicionado ao final (equivalente a append).
- Se index for negativo, o Python conta a partir do final: index=-1 insere antes do último elemento, index=-len(lista)-1 insere no início, e índices muito negativos também resultam em inserção no início.
- Exemplo curto (para entender):
- Se lista = [10, 20, 30] e executamos lista.insert(1, 15), a lista vira [10, 15, 20, 30].
- Se executamos lista.insert(100, 40) em [10, 15, 20, 30], vira [10, 15, 20, 30, 40].
Passo 3
Por que checar se o valor já existe antes de inserir:
- Em Python, verificamos presença com o operador in: valor in lista — isso devolve True se o valor estiver presente.
- A verificação evita duplicatas quando o enunciado exige que não se adicione um valor já existente.
- Complexidade: a operação in faz busca linear (O(n)), que é aceitável para listas pequenas/médias e para um exercício de prova. É simples e direto para implementar numa prova sem complicar demais.
Passo 4
Implementação passo a passo da função (explicando cada linha):
- Nomearei a função de forma descritiva: inserir_se_nao_existir.
- Parâmetros: lista (a lista onde inserir), indice (posição onde inserir), valor (valor a inserir).
- Passos internos:
- Verificar presença com if valor in lista:.
- Se estiver presente, retornar a mensagem formatada com o valor entre colchetes: f"O valor [{valor}] já existe na lista e não foi adicionado".
- Caso contrário, usar lista.insert(indice, valor) para inserir.
- Retornar a lista (modificada).
Código final da função (já testado mentalmente com os exemplos que vou mostrar a seguir):
def inserir_se_nao_existir(lista, indice, valor):
if valor in lista:
return f"O valor [{valor}] já existe na lista e não foi adicionado"
lista.insert(indice, valor)
return lista
Explicação das escolhas:
- Usei f-string para montar a mensagem com o valor entre colchetes, exatamente no formato solicitado.
- A função modifica a lista passada (comportamento do list.insert) e retorna a própria lista modificada, atendendo ao enunciado.
- Poderíamos optar por trabalhar em uma cópia da lista (lista.copy()) para não alterar a original, mas o enunciado pediu usar list.insert(), e a versão mais direta em provas é alterar a lista recebida.
Passo 5
Aplicando a função à lista fornecida e mostrando exemplos práticos passo a passo (isso ajuda a entender o que vai acontecer na prova):
Lista inicial (usando o dado do enunciado):
lista = [4, 8, 12, 14, 16, 2, 5, 18, 3, 10, 11, 19, 7, 13, 1]
lista = [4, 8, 12, 14, 16, 2, 5, 18, 3, 10, 11, 19, 7, 13, 1]
Exemplo A — inserir um valor que NÃO está na lista:
- Queremos inserir o valor 6 na posição índice 2.
- Chamada: inserir_se_nao_existir(lista, 2, 6)
- Verificação: 6 in lista ? → False (6 não está presente).
- Executa lista.insert(2, 6).
- A lista fica:
[4, 8, 6, 12, 14, 16, 2, 5, 18, 3, 10, 11, 19, 7, 13, 1] - A função retorna essa lista modificada.
Observação: depois dessa chamada, a variável lista foi alterada — se fizer novas chamadas, estará usando a lista já modificada.
Exemplo B — tentar inserir um valor que JÁ está na lista:
- Usando a lista original (ou, se quisermos o estado original, recriar a lista inicial), testar inserir 8 no índice 0.
- Chamada: inserir_se_nao_existir(lista, 0, 8)
- Verificação: 8 in lista ? → True (8 já existe).
- A função retorna a string:
“O valor [8] já existe na lista e não foi adicionado” - A lista permanece inalterada por essa chamada.
Exemplo C — índice maior que o tamanho da lista (comportamento esperado):
- Chamada: inserir_se_nao_existir(lista, 100, 20)
- Se 20 não estiver na lista, o método insert coloca 20 no final (comportamento de append).
- Retorna a lista com 20 no fim.
Exemplo D — índice negativo:
- Chamada: inserir_se_nao_existir(lista, -1, 9)
- Se 9 não estiver, o insert com índice -1 coloca 9 antes do último elemento.
Passo 6
Dicas rápidas para usar isso na prova:
- Sempre explique que você checa presença com ‘in’ antes de inserir (mostre a linha if valor in lista:).
- Mostre que usa list.insert(indice, valor) e explique que isso desloca elementos e modifica a lista.
- Se pedirem para não alterar a lista original, diga explicitamente que você faria uma cópia com lista.copy() antes de inserir; caso contrário, a solução direta altera a lista passada.
- Teste mentalmente os casos borda: índice negativo, índice grande, e valor já existente.
Resposta
- list.insert(insere um elemento na lista na posição especificada; modifica a lista in-place e não retorna valor).
-
def inserir_se_nao_existir(lista, indice, valor):
if valor in lista:
return f"O valor [{valor}] já existe na lista e não foi adicionado"
lista.insert(indice, valor)
return lista
if valor in lista:
return f"O valor [{valor}] já existe na lista e não foi adicionado"
lista.insert(indice, valor)
return lista
3) Exemplo (inserindo 6 no índice 2): [4, 8, 6, 12, 14, 16, 2, 5, 18, 3, 10, 11, 19, 7, 13, 1]
4) Exemplo (tentando inserir 8 que já existe): O valor [8] já existe na lista e não foi adicionado