Métodos de Lista
Teoria
Aprofundando conhecimentos em Listas
Fala aí, meu chegado! Se liga que eu vou te contar sobre alguns métodos de listas, que são funções prontas que já vem no Python e que vão facilitar muito sua vida na hora da prova. Alguns deles são até essenciais, então fica ligado!
append() e extend()
A ideia desses métodos é acrescentar algo numa lista já existente. O primeiro, append(), acrescentar um novo elemento na lista, enquanto que o extend() concatena duas listas.
Se liga que aqui a gente acrescentou um novo item no fim da lista, do tipo string. Mas poderia ser de qualquer tipo, ok?! Só não esquece que o append() sempre acrescenta no fim da lista.
Além disso, a gente tá ligado que também dá pra concatenar duas listas usando o operador de soma (+), e tu precisa ficar ligado na diferença entre essas alternativas. Quando a gente usa o operador de soma pra concatenar, uma nova lista é criada como união das duas, mas as duas antigas permanecem inalteradas. Em contrapartida, doido, se tu usar o método extend(), a lista original vai ser alterada pra conter a união com a segunda lista.
Viu?! Nesse caso, editamos a lista_1. A forma de usar o operador de soma seria essa:
Nesse caso, a gente consegue pegar uma lista que é a união das listas lista_1 e lista_2, mas essas listas permanecem intactas no final, percebeu?!
pop() e remove()
Esses dois métodos fazem a mesma coisa: removem um elemento da lista. A diferença está no parâmetro que passamos. No método pop() a gente passa como argumento (entre parênteses) o índice do elemento a ser removido. No método remove, porém, a gente consegue dizer qual elemento a gente quer remover.
Se ligou? A gente deletou o “eu” com o remove(), e depois deletamos o “engenharia” com o pop() (a gente usa a mesma notação de índice que usamos no fatiamento, incluindo índices negativos, que contam os itens de trás pra frente).
Uma última coisa muito útil sobre o método pop() é que ele retorna o elemento que foi deletado (somente funciona com o pop(), jae?).
index()
Cara, a ideia desse método é descobrir o índice de um determinado elemento em uma lista.
O resultado desse programa é:
Viu? Retornou o índice do elemento “amo”. O cuidado que tu tem que tomar com esse método é que, caso o elemento não exista, vai dar um erro brabo. Por isso, o ideal é você checar se o elemento existe antes de usar o método index().
Depois de executar, aparece isso no terminal:
Agora, com “cerveja” na lista, retornou isso:
hehehe
copy()
Cara, uma das características mais importantes das listas é a capacidade de uma lista de ser modificada. Isso ajuda muito em alguns casos, mas às vezes pode atrapalhar também! O método copy() retorna uma cópia de uma lista, então a gente pode mexer nela a vontade sem modificar a original. Deixa eu te mostrar esse problema na prática!
O resultado foi esse:
Nesse exemplo, a gente conseguiu editar a lista_1 usando a variável lista_2. Isso porque esses dois nomes apontam pra mesma lista na memória do computador. Geralmente, a gente não quer editar nossos dados armazenados. Então, se temos que lidar com alguma lista sem alterar os dados que temos armazenados, pegamos uma cópia dela.
Aí, olha como fica as listas dessa vez:
Sacou?! Dessa forma, as modificações que a gente faz não vão afetar a lista original.
Dica: sempre que for receber listas como parâmetros de funções, comece a função fazendo uma cópia da lista recebida pra não editar os dados originais, jae?! Vamos treinar isso nos exercícios de fixação.
Outros
Pô, mano. Eu separei e detalhei até aqui os métodos mais importantes pra você partir logo pros exercícios se estiver sem tempo, mas não são os únicos. Eu vou deixar aqui uma tabelinha com outros métodos pra, caso você esteja com tempo sobrando, dar uma olhada, jae?!
Tô te esperando nos exercícios de fixação, doido! Bora!
pop() e remove()
index()
copy()
Outros
Exercícios Resolvidos
Exercício Resolvido #1
Elaboração própria.
Faça um programa que receba uma quantidade indeterminada de números do usuário e, em sequência, adicione esses números em uma lista. Quando o valor inserido pelo usuário for -1, o programa deve encerrar as requisições de entrada e imprimir a lista na tela.
Passo 1
Vamos começar o nosso programa declarando a lista que armazenará os números inseridos pelo usuário e definindo a estrutura de repetição que será responsável por requisitar as entradas desses números:
Nesse caso, utilizaremos um laço de repetição while que terá como condição o número 1 (sempre verdadeiro). Sendo assim, basta requisitarmos ao usuário a entrada de um número e logo após verificarmos através do comando condicional if se esse número é igual a -1. Caso seja, o comando break deve ser executado para encerrar a execução do laço de repetição.
Passo 2
Porém, se o valor inserido pelo usuário não for igual a -1 (laço de repetição continua a sua execução), nós devemos utilizar o método de lista append para adicionarmos o número inserido pelo usuário no final da lista:
Para isso, basta passarmos como parâmetro do método append de o dado que será inserido, que nesse caso é .
Passo 3
Por fim, como já tratamos tudo aquilo que ocorre dentro do laço de repetição, basta codificarmos agora os comandos que virão após a execução desse laço:
No caso desse exercício, basta imprimirmos na tela a lista utilizada para armazenar os números inseridos pelo usuário.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #2
Elaboração própria.
Faça um programa que preencha uma lista com 10 palavras inseridas pelo usuário, ordene essa lista em ordem crescente e imprima na tela a lista ordenada.
Passo 1
Bom, vamos começar o nosso programa declarando a lista que irá armazenar os dados inseridos pelo usuário e definindo uma estrutura de repetição para realizar as requisições de entrada:
Nesse caso, utilizaremos o laço de repetição for para percorrermos o intervalo de 1 a 10, requisitando a cada loop uma entrada ao usuário e adicionando o dado inserido pelo mesmo no final da lista.
Passo 2
Após termos preenchido a lista, devemos realizar a ordenação dos dados armazenados por ela, para isso podemos utilizar o método de lista sort:
Observe que esse método é capaz de realizar a ordenação dos dados de uma lista sem a necessidade de um parâmetro.
Passo 3
Por fim, basta realizarmos a impressão da lista ordenada na tela:
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #3
Elaboração própria.
Observe o seguinte trecho de código:
Continue esse programa de forma com que os elementos 1, 3 e 5 sejam removidos da lista . Após isso, imprima o novo conteúdo da lista na tela.
Passo 1
Para continuarmos o nosso programa, nós temos que o conhecer o método de lista responsável pela remoção de itens, nesse exercício usaremos o pop:
A utilização do método pop de uma lista é bastante simples, se o mesmo for usado sem nenhum parâmetro ou argumento, o mesmo irá remover por padrão o último elemento de uma lista. Como esse não é o nosso caso, utilizaremos o método pop passando como argumento os respectivos índices dos elementos 1, 3 e 5 na lista, que são: 0, 2 e 4.
Vale ressaltar que a remoção deve ser feita sempre do maior índice para o menor, caso contrário, os elementos posteriores terão os seus índices alterados a partir do momento que a lista é reorganizada após uma remoção.
Passo 2
Agora que já removemos os elementos 1, 3 e 5, basta imprimirmos o novo conteúdo da lista na tela. Para isso, basta utilizarmos uma estrutura de repetição:
E pronto! Será impresso na tela aquilo que chamamos de perfeição na terra: açaí, banana e granola.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #4
Elaboração própria.
Dada a seguinte lista:
Defina uma função chamada e faça um programa que receba como entrada o CPF a ser removido dessa lista e o remova utilizando essa função. Após isso, o programa deve imprimir a lista sem o CPF anteriormente removido.
Passo 1
Vamos começar o nosso programa definindo a função :
Prontinho! simples, né?
Basicamente nós definimos a função de uma forma com que a mesma espere dois parâmetros como entrada: a lista que terá o CPF removido e o próprio CPF. Após isso, nós simplesmente temos que utilizar o método de lista remove em passando como parâmetro para o mesmo o CPF recebido na função ().
O método remove irá procurar na lista em que está sendo utilizado a primeira ocorrência do item passado como parâmetro e irá removê-lo, ou seja, ele irá procurar em pelo CPF armazenado em e irá removê-lo.
Lembrete: se dois itens iguais pertencerem a uma lista, o método remove irá remover apenas a primeira ocorrência desse item.
Passo 2
Agora que já temos a função definida, basta desenvolvermos o código principal:
Que basicamente irá requisitar ao usuário o CPF que será removido e passará o mesmo, juntamente com a lista , como parâmetro da função . Após isso, o programa utilizará uma estrutura de repetição for para imprimir na tela os itens remanescentes em .
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #5
Elaboração própria.
Dadas as seguintes listas de gênero de jogos eletrônicos:
Continue esse programa de forma com que os três gêneros sejam concatenados em uma quarta lista chamada . Após isso, imprima o conteúdo de cada jogo presente em .
Passo 1
Para resolvermos esse exercício nós temos que estar muito ligados em uma palavrinha do enunciado que é: “concatenados”. Por se tratar de listas, ao lermos essa palavra nós automaticamente devemos nos lembrar do método de lista extend.
Mas antes, devemos declarar a lista :
Passo 2
Com a lista declarada, nós já somos capazes de realizar a concatenação das listas de gênero de jogos:
Para isso devemos utilizar o método extend na lista passando como parâmetro a lista que será concatenada. Isso fará com que todos os elementos da lista que está sendo passada como parâmetro sejam adicionados ao final da lista em que o método está sendo invocado, nesse caso .
Passo 3
Por fim, após todas as concatenações e utilizando uma estrutura de repetição, basta realizarmos a impressão da lista :
Que agora deverá conter todos os jogos presentes nas listas de gênero , e juntos.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #6
Elaboração própria.
Considere o seguinte trecho de código:
Continue esse programa de forma com que o elemento faltante para que essa lista tenha a seguinte lógica de formação: País, Estado, Município e Bairro seja inserido.
Passo 1
Que elemento está faltando nessa lista para que ela esteja na ordem do enunciado?
Nós temos “Brasil” como país, “São Paulo – Capital” como município... Epa! Pulamos o Estado, logo é ele que deve ser inserido nessa lista.
Sendo assim, o elemento faltante é: “São Paulo – Estado”.
Passo 2
Mas pera, Estado deve estar logo após o elemento “Brasil”, como vamos inserir ele ali?
Simples! Podemos utilizar o método de lista insert para inserirmos um elemento em uma posição específica de uma lista, nesse caso na posição 1 (listas se iniciam na posição 0):
Para isso, basta utilizarmos o método insert de (lista) passando para o mesmo dois parâmetros: a posição do novo elemento e o conteúdo dele, respectivamente.
Passo 3
Agora que já temos a lista no formato correto, utilizaremos um laço de repetição for para imprimirmos o conteúdo dela:
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #7
Elaboração própria.
Um professor, na tentativa de economizar tempo em sala de aula na correção das provas, pediu a sua ajuda para fazer um programa que verifica quantos alunos possuem o mesmo nome.
Sendo assim, faça um programa que receba como entrada um nome, compare com a lista de todos os nomes de alunos inscritos nessa matéria e imprima na tela a quantidade de alunos que possuem o nome inserido.
Passo 1
Essa questão é bem tranquila, supondo uma lista de nomes já que o exercício não fornece uma, vamos requisitar a entrada de um nome ao usuário:
Passo 2
Após termos o nome que iremos verificar, basta nos lembrarmos do método de lista count, que é capaz de retornar quantas vezes um elemento aparece em uma lista:
Para isso, basta utilizarmos o método count de passando como parâmetro para o mesmo a variável (que armazena o nome que verificaremos a igualdade). Após isso, como utilizamos esse comando dentro da função print, será impresso na tela a quantidade de pessoa inscritas nessa matéria com o nome anteriormente inserido.
Resposta
Ei, a resposta está no passo a passo :)
Exercício Resolvido #8
Elaboração própria.
Suponha que uma lista de nomes possui um de seus nomes armazenado erroneamente e a única coisa que você se lembra é o nome incorretamente inserido: “Gutavo”.
Além disso, essa lista é extremamente grande para procurarmos a posição do nome incorreto manualmente:
Sendo assim, faça um programa que receba como entrada o nome incorreto e o nome correto, encontre a posição em que o nome incorreto está armazenado na lista e o remova. Em seguida, insira o nome correto na mesma posição.
Passo 1
Vamos começar o nosso programa requisitando ao usuário a entrada do nome incorreto e do nome correto:
Passo 2
Tendo o nome incorreto armazenado em , nós podemos utilizar o método de lista index para encontrarmos a posição em que esse nome está inserido:
Para isso, basta utilizarmos o método index de passando como parâmetro para o mesmo a variável . Após isso, se o dado passado como parâmetro realmente estiver na lista (que é nosso caso) o seu índice será retornado e, com base nesse código, armazenado na variável .
Passo 3
Agora que temos a posição do nome incorreto armazenada, podemos utilizar o método remove para eliminarmos esse nome da lista:
Passo 4
Por fim, agora que removemos o nome incorreto da lista, está na hora de inserirmos o nome correto na mesma posição. Como já temos essa posição, basta utilizarmos o método de lista insert para realizarmos a inserção:
Prontinho! O problema do nome incorreto que estava perdido nessa lista gigante acabou de ser corrigido.
Resposta
Ei, a resposta está no passo a passo :)