<jupyter_start><jupyter_text>Listas  Introdução Listas são estruturas onde ser armazenam dados do mesmo tipo (embora isso não seja uma obrigação). Em comparação com as filas e pilhas, acabam oferecendo mais recursos, o que a tornam uma opção mais aplicável em algumas situações.Operações comuns a listas:- Cria e apagar- Inserir um elemento na posição x- Remover um elemento da posição x- Acessar um valor de uma posição x- Alterar o valor- Combinar duas ou mais listas em uma só- Ordenação dos valores da lista Veja que, diferente da fila ou da pilha, a lista fornece a possibilidade de acessar elementos em uma dada posição, seja para consultar o valor ou para inserir/remover valores. Além disso, uma lista fornece recursos especialmente úteis como ordenação dos valores, sem que seja necessário a implementação de ordenação dos elementos de uma lista.  Listas em Python Em Python, uma lista é criada exatamente como se cria uma pilha, ou seja, através do uso de colchetes contendo valores iniciais ou não. Veja um exemplo com uma lista de valores vazios:<jupyter_code>listaVazia = []<jupyter_output><empty_output><jupyter_text>Para criar uma lista com valores iniciais, basta colocá-los dentro dos colchetes.<jupyter_code>listaComValores = [10, 8, 4, 7]<jupyter_output><empty_output><jupyter_text>Como deve ter notado, é exatamente igual a uma pilha. Na verdadem Python implementa pilha usando uma estrutura de lista, ou seja, apenas com as operações de *push* e *pop*.   Operações em Listas  Inserir um elemento na lista<jupyter_code>lista = [3,5,7]

# insere o elemento 6 na 3a posição
lista.insert(2,6)

print(lista)<jupyter_output><empty_output><jupyter_text>Para inserir no final basta usar a função append()<jupyter_code>lista = [3,5,7]

# insere o elemento 6 no final da lista
lista.append(6)

print(lista)<jupyter_output><empty_output><jupyter_text>Remover um Elemento da Lista<jupyter_code>lista = [3,5,7]

lista.remove(5)

print(lista)<jupyter_output><empty_output><jupyter_text>Caso o elemento não exista, então dará erro<jupyter_code>lista = [3,5,7]

# elemento 6 não existe
lista.remove(6)

print(lista)<jupyter_output><empty_output><jupyter_text>Remover um elemento de uma posição<jupyter_code>lista = [3,5,7]

# vai remover o primero elemento
lista.pop(0)

print(lista)<jupyter_output><empty_output><jupyter_text>Acessar um elemento da lista<jupyter_code>lista = [3,5,7]

print(lista[1])<jupyter_output><empty_output><jupyter_text>Contar a ocorrência de um elemento em uma lista<jupyter_code>lista = [3,5,7, 6, 8, 12, 8]

valorProcurado = 8
numeroElementos = lista.count(valorProcurado)

print("Essa lista tem {} ocorrências do valor {}".format(numeroElementos, valorProcurado))<jupyter_output><empty_output><jupyter_text>Filtrar elementos<jupyter_code>lista = [3,5,7, 6, 8, 12, 8]

#lista todos os elementos > 5
listaFiltrada = [x for x in lista if x > 5]
print(listaFiltrada)

# note que a lista original não é alterada
print(lista)<jupyter_output><empty_output><jupyter_text>Ordenar os elementos<jupyter_code>lista = [5,4,7]
lista.sort()
print(lista)<jupyter_output><empty_output><jupyter_text>Caso queira a ordem reversa<jupyter_code>lista = [5,4,7]
lista.sort(reverse=True)
print(lista)<jupyter_output><empty_output><jupyter_text>Para inverter os elementos<jupyter_code>lista = [5,4,7]
lista.reverse()
print(lista)<jupyter_output><empty_output><jupyter_text>Limpar os elementos da lista<jupyter_code>lista = [5,4,7]
lista.clear()
print(lista)<jupyter_output><empty_output><jupyter_text>Retornar a posição de um elemento da lista<jupyter_code>lista = [5,4,7]

# busca em que posição está o valor 4
print(lista.index(4))<jupyter_output><empty_output><jupyter_text>Buscando um elemento que não existe<jupyter_code>lista = [5,4,7]

# busca em que posição está o valor 9. Se não tem, dará erro
print(lista.index(9))<jupyter_output><empty_output><jupyter_text>Se desejar que seja impressa uma mensagem mais clara ao usuário, basta usar o bloco try-except:<jupyter_code>lista = [5,4,7]

try:
    print(lista.index(9))
except:
    print("O valor não está na lista")<jupyter_output><empty_output><jupyter_text>Se o elemento aparece mais de uma vez, então retorna a posição da primeira ocorrência<jupyter_code>lista = [3,5,7, 6, 8, 12, 8]

print(lista.index(8))<jupyter_output><empty_output><jupyter_text>Exercícios ** Ex 1: Crie uma lista com 4 nomes. Sua solução pode usar a inicialização da variável ou com as funções append ou insert**<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output><jupyter_text>** Ex 2: Altere o exemplo anterior para que, ao invés de valores fixos, o usuário digite 4 nomes. Use 4 instruções para leitura dos valores**<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output><jupyter_text>** Ex 3: A partir da lista criada no exercício anterior, informe ao usuário a lista ordenada dos valores**<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output><jupyter_text>** Ex 4: Altere a solução do exercício 2 para que seja usada uma estrutura de repetição para ler os nomes digitados pelo usuário. **<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output><jupyter_text>** Ex 5: Mude a solução do exercício 5, considerando os novos requisitos**- será perguntado ao usuário quantos nomes deseja digitar (x)- o sistema perguntará x vezes para que o usuário digite um nome- quando o usuário digitar o último nome, o sistema deve encerrar e imprimir a lista ordenada de valores<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output><jupyter_text>** Ex 6: A partir da lista abaixo, continue a implementação para que seja perguntado ao usuário em qual posição deseja inserir o novo valor. Após o usuário informar a posição, deverá ser pedido que digite um novo nome. Seu sistema deverá inserir esse novo nome na posição informada pelo usuário.**<jupyter_code># implemente sua solução aqui
linguagens = ["Python", "Java", "Lua"]<jupyter_output><empty_output><jupyter_text>** Ex 7: A partir da lista abaixo, implemente o mesmo exemplo do exercício anterior, dessa vez pedindo ao usuário que informe de qual posição será excluído o registro e implemente a remoção do valor da posição informada pelo usuário. **<jupyter_code># implemente sua solução aqui
linguagens = ["Python", "Java", "Lua"]<jupyter_output><empty_output><jupyter_text>** Ex 8: Implemente um sistema que pergunte ao usuário qual opção gostaria de usar para remoção: por posição ou por valor informado. De acordo com a opção escolhida, implemente a remoção. Exemplo: se o usuário escolheu remover por posição e informou a posição 2, o sistema deverá remover o valor Lua. Se escolher remover por valor e informou Python, então o sistema deverá remover o item Python da lista.**<jupyter_code># implemente sua solução aqui
linguagens = ["Python", "Java", "Lua"]<jupyter_output><empty_output><jupyter_text>** Ex 9: Dada a lista abaixo, implemente uma solução que pergunte ao usuário qual valor deseja localizar. O seu sistema deverá informar quantas vezes o valor procurado foi achado na lista. Note que, caso o valor não esteja na lista, seu sistema deverá informar uma mensagem clara, sem ser a mensagem de erro do Python. Para isso você usará uma estrutura de try-except mostrada na parte de explicações do assunto neste caderno**<jupyter_code># implemente sua solução aqui
linguagens = ["Python", "Java", "Lua"]<jupyter_output><empty_output><jupyter_text>** Ex 10: Crie um sistema interativo que forneça as seguintes opções ao usuário:**- inserir valores em uma lista- remover valor de uma lista- ordenar valores de uma lista- localização valores de uma lista- sair<jupyter_code># implemente sua solução aqui<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08209245112003108, 'fraction_numerical': 0.013595752945746472, 'mean_word_length': 6.412667946257198, 'pattern_counts': {'":': 0, '<': 113, '<?xml version=': 0, '>': 115, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '28', 'dir': 'jupyter-structured-clean-dedup', 'id': '621581', 'license': 'MIT', 'n_tokens_mistral': 2858, 'n_tokens_neox': 2840, 'n_words': 917, 'path': 'Fontes-UDF/datastructures/Listas.ipynb', 'repo_name': 'IgorWinMac/UDF-Material', 'size': '7723'}