Olá, vamos aprender pouco mais sobre o que a gente pode fazer com listas. Manipulações que a gente pode fazer determinadas listas. Primeira coisa que eu quero ensinar para vocês é como a gente pode pegar fatias de listas. Fatias de listas é uma forma de a gente pegar só pedaço da lista. A gente define determinado pedaço da lista e a gente extrai uma outra lista que é como se fosse uma sublista. Como a gente pode fazer isso Python? Vamos começar, eu sempre gosto de brincar com aqueles números primos. Vamos pegar aquele programa para gerar os números primos de zero a 100 e daí a gente gera uma lista a partir disso. Então aqui, primos recebe, pronto. Já temos aqui a nossa lista dos números primos. Agora vamos supor que eu quero pegar só pedaço dessa lista, determinado, quero dar índice de inicio e fim e pegar extrair esse pedaço. Como eu posso fazer isso? Basta eu fazer primos e daí eu coloco aqui por exemplo dois valores, o início e o fim. O que ele fez aqui? Ele pegou o valor que começa no índice que eu dei. Então lembra, o dois está no índice zero, o três está no índice e ele vai até a menos do que o final que eu coloquei aqui. Eu coloquei o final aqui o dois, então ele pega do três, e a menos que o dois. Então sempre o comprimento da lista resultante vai ser o final menos o inicial. Então é dois menos o comprimento vai ser então ele pegou elemento a partir do índice o que foi só o três aqui. Então se eu tivesse feito primos de dois a sete, sete menos dois, cinco. Ele vai devolver dois, três, quatro, cinco elementos desde a posição a partir da posição dois que é o cinco. Deixa eu ver, quantos primos eu tenho aqui mesmo? Eu tenho 25. Note também que esse comando aqui ao extrair a fatia ele devolve para nós uma nova lista. Ele não está alterando a lista primos, ele não está jogando fora os primos que estão armazenados nesta lista primos. Neste caso ele está criando uma nova lista. Neste caso uma lista de elemento, neste caso aqui uma lista de cinco elementos. Então o comprimento é 25. Se eu quiser a primeira metade aí, eu posso fazer primos desde o zero até aproximadamente metade, zero, 12 então os 12 elementos iniciais. E se eu quiser os três elementos finais, daí eu faço primos do 12 até o 25. Então peguei a primeria metade da lista, a segunda metade da lista. Tem uma outra forma mais abreviada de fazer algo semelhante. Eu posso por exemplo fazer primos. Não preciso, se eu quero que comece desde o começo, eu não preciso dar o primeiro número. Eu posso já fazer direto dois pontos 12. Isso devolve alí do três ao 37, e a mesma coisa equivalente. Se eu quero a partir da posição 12 até o final, eu não preciso dizer qual é o final. Eu posso fazer 12 e dois pontos, fecha colchetes. Ele vai dar a partir da posição 12 até o final ali da minha lista. Ele gera uma nova lista. Então particular, eu posso ter, guardar uma nova variável, fazer final recebe primos de 12. Agora eu tenho duas listas, eu tenho a lista primos e eu tenho a lista final, voltando ali para as sublistas diferentes. Então a primeita coisa que a gente viu hoje são as fatias de listas. Agora vamos falar sobre copiar, ou melhor, clonar listas. Então listas, clonando listas. Vamos supor que eu tenho uma lista aqui, chamada de lista e ela contém dentro de si três elementos: vermelho verde e azul. O verde teve sorte porque ele ficou verde mesmo, os outros também ficaram verde. Então tem essa minha lista vermelho, verde, azul. Agora ele mostrou tudo azul. O que acontece se eu faço lista dois, recebe lista? A gente vai ver aqui que o lista dois agora passa também a se referenciar à mesma lista que era a lista. Então se eu digitar aqui lista dois, vai aparecer ali o vermelho, verde, azul. Se eu digitar lista lista também vermelho, verde, azul. Agora uma coisa interessante, vamos supor que eu altero o valor da posição zero da lista dois. Então lista dois de zero recebe rosa. Então eu alterei a lista dois, certo? Lista dois agora tem rosa, verde e azul. Agora, o que será que aconteceu com a lista? Se eu faço lista vamos ver, também rosa. Então note que esse meu comando aqui, lista dois de zero, recebe rosa, ele alterou não só a lista dois como alterou a lista também. E por que isso? Porque ao fazer isso aqui, ambas as variáveis estão se referindo à mesma lista. Ele não criou uma nova lista. Ele, ambas as variáveis estão se referindo à mesma lista. Vamos entender pouco mais de perto como isso aqui funciona. Então vamos ver como está realmente funcionando a coisa. A gente tem essa lista aqui, vermelho verde azul embaixo, e tem a variável lista que está apontando para esta lista. Então quando eu faço ali cima, lista recebe vermelho, verde, azul, na verdade eu estou criando uma referência. Então esta lista aqui está apontando para esta lista vermelha, verde e azul. Quando eu faço lista dois recebe lista o que eu estou fazendo é simplesmente essa variável lista dois vai passar a ter uma referência para a mesma lista. Então, ambas as variável estão se referenciando à mesma lista. Então se eu faço lista dois de zero recebe rosa, eu estou colocando rosa aqui e eu acabei alterando indiretamente ambas as variáveis, porque ambas as variáveis de referem à mesma lista, que talvez não é o que eu gostaria de ter feito. Como eu poderia clonar uma lista de forma que quando eu faço lista dois recebe rosa só altera a lista dois e não altera a lista? Pra isso eu preciso fazer com que os dois não apontem para o mesmo, mas sim criar uma nova lista que seria clone da lista e armazenar isso na lista dois. Como eu posso fazer isso? Aqui está uma função Python que eu chamei de clone, que recebe como parâmetro uma lista e cria clone, uma cópia dessa lista. Como ele faz isso? Primeiro, nessa variável clone, eu começo aqui com uma lista vazia, daí pra cada objeto nessa minha lista o que eu faço? Eu, nesse clone aqui, eu acrescento ao final dele este objeto. Então ao final, essa variável clone aqui vai ter uma segunda lista que é uma cópia perfeita da primeira lista, ou seja, todos os elementos que estavam na lista inicial nessa variável lista são clonados para essa variável clone que vai guardar uma outra lista e daí isso aqui vai devolver, esse return clone vai devolver uma nova lista que está armazenada outro lugar da memória, que não o mesmo desta lista aqui, mas que contém elementos de mesmo valor. Então vamos agora clonar usando aquele método clone. Então se eu tenho a lista apontando para essa lista vermelho, verde e azul, e eu faço lista dois recebe clone lista, a lista dois passa a apontar para outra lista também contendo o vermelho, o verde e o azul, mas é uma lista diferente. Então se eu faço lista dois de zero recebe rosa, ele vai alterar só aqui na lista dois o rosa. A lista continua tendo vermelho na minha primeira posição. Outra coisa interessante é que fatiamento, como a gente viu antes, também cria uma nova lista, então se eu faço lista ini fim, ou lista ini, lista fim, todas estas opções aqui vão criar uma nova lista contendo trecho, pedaço da lista anterior e particular tem essa opção aqui, última, que é lista e daí entre colchetes apenas os dois pontos. O que isso faz? Na verdade ele devolve clone da lista, então, a rigor, Python a gente nunca vai precisar usar esse método clone aqui que eu mostrei para vocês, essa função clone não vai ser necessária porque tem jeito muito mais simples muito mais enxuto de fazer a mesma coisa, que é simplesmente Escrever isso aqui: lista [:] isso já vai criar clone para nós. Uma outra forma de clonar é simplesmente fazer isso aqui lista 2 = lista1 [:] vai criar o clone para a gente. E daí, fazendo rosa também vai dar certo, vai trocar o rosa só aqui na lista dois e não aqui na lista então, dessa forma a gente vai poder clonar listas e fazer atribuições a essas listas. Se eu tenho essa minha, vou repetir aqui, se a minha lista tem esse valor e eu faço lista dois recebe lista dois e agora eu repito aquilo, faço lista dois de zero recebe rosa. E agora vamos ver a lista a lista continua com vermelho mas a lista dois tem o rosa, então eu criei clone da lista. Vamos ver agora outro conceito, que é a pertinência a uma lista. Que a ideia aqui é nós verificarmos se determinado elemento pertence a uma lista ou não. Como que a gente pode fazer isto? Se eu tenho essa lista que é o vermelho, verde e azul, eu quero saber se o rosa está dentro da lista. Basta fazer rosa in lista ele vai dizer falso, o rosa não está na lista. Rosa in lista dois, ele fala true, sim, o rosa está na lista dois. Então, eu posso escrever algo desse tipo, a gente vai ter if rosa in lista daí print, está. If rosa in lista print está, mas rosa não está in lista então, ele não imprimiu nada, mas se eu fizesse if vermelho in lista print está, [ÁUDIO_EM_BRANCO] será que consigo botar else aqui, vamos ver, else, consigo, print faltou. O que é esse meu comando? Se o vermelho estiver na lista eu quero que você imprime está, caso contrário imprime que ele não faltou, não está na lista. Mas nesse caso sim, o vermelho está na lista então ele imprimiu aqui o: está. Vai ser comum comandos if ou condições coisas que a gente quer testar, verificar se determinado elemento está dentro de uma lista, isso é o que a gente chama pertinência a uma lista. Outro comando importante é a questão da concatenação de listas, concatenação é você acrescentar ao final de uma lista, outra lista, você pegar duas listas, concatenar duas listas significa juntar. Ao final de uma lista você coloca aquela outra lista. E como se faz concatenação? Parte é muito simples, a gente faz simplesmente usando o sinal de mais. Você tem uma lista dois, mais a lista três, quatro. Na verdade, eu estou fazendo a concatenação da lista dois, com a lista três quatro e o resultado é essa lista aí dois três quatro. Posso falar print e aqui uma lista mais e aqui uma outra lista. O que ele está fazendo aqui, ele concatena as duas listas e o resultado que é uma lista única, concatenada, ele passou para o comando print e daí imprimiu essa lista total. Outra coisa que eu poderia fazer, por exemplo, é uma variável a recebe dois, três, e a variável b recebe quatro, cinco, seis, tenho aqui o a e o b guardando duas listas diferentes. Posso fazer algo do tipo a mais b, que vai ser dois, três, quatro, cinco, seis, ou posso fazer b mais a b mais a é quatro, cinco, seis, dois, três. Eu posso fazer b, mais a, mais b, quatro, cinco, seis, dois, três, quatro, cinco, seis. Essa operação que a gente usa o sinal de soma, na verdade é concatenação listas. Uma coisa que a gente tem que notar, o comando append. O comando append acrescenta ao final de uma lista existente novo elemento mas concatenação é pouco diferente do append, qual a diferença? Vamos relembrar o append: se eu faço a o a é dois, três. Eu faço a.append acrescento ao final dessa minha lista a gato o a foi alterado. O a passou a ser dois, três, gato. Note, o append altera uma lista existente, já a concatenação de listas não altera uma lista existente. Se eu tenho o a dois, três, gato, agora. Se eu faço a concatenação eu vou usar dessa forma: b recebe a mais cinco. Deu erro aqui. Ele está dizendo que há uma lista, você não pode concatenar inteiro. Você só pode concatenar uma lista a outra lista. Vamos concatenar uma lista contendo o número cinco vez de concatenar o número cinco. Faço b recebe a mais, isso é uma lista contendo o número cinco, vai dar certo, note que o b aqui, virou dois, três, gato, cinco, ele concatenou ao final do a esse cinco, criou uma nova lista e essa nova lista foi armazenada na variável b. Mas o a não se alterou, essa é a diferença entre o append e a concatenação. O append altera uma lista existente, a concatenação gera uma nova lista, sem alterar as listas. existentes. Essa é a característica da concatenação de listas. Outro conceito interessante que a gente precisa dar uma olhada, é a repetição de listas, que é uma forma de a gente criar listas por repetição. Vamos voltar ao nosso a, para facilitar, se o a está valendo dois, três, eu posso criar uma outra lista chamada a triplicado, onde eu simplesmente faço a vezes três. Qual é o valor desse a triplicado? Errei aqui o nome, a triplicado, O a triplicado vai ser: dois, três, dois, três, dois, três. Essa operação de multiplicação não é multiplicação numérica da álgebra, na verdade, ele pega aquela lista e repete n vezes, onde n é o número que você passou aqui como parâmetro. Se eu tenho b aqui, se eu fizer b quintuplicado, vai ser igual a b vezes cinco. Qual que é o valor do b quintuplicado? Os valores que estavam aqui no b anterior, cinco vezes repetidos. Dois, três, quatro, cinco gatos. Comprimento desse b quintuplicado vai ser o comprimento do b original multiplicado por cinco. Deu 25. Essa é a forma de criar listas a partir de repetições. Outra coisa interessante é a remoção listas. Remoção de elementos Remoção listas. Como é a remoção listas? É muito simples, se eu tenho uma variável que é dois, três, eu faço del, vamos usar esse comando delete, e eu digo por exemplo, que quero apagar o elemento dessa lista, note que o dois, que estava no índice ele foi removido, agora a lista só tem o e o três, outro exemplo, se tenho lista igual fazer uma lista onde tenho letras: a, b, c, d, e, f, pronto. Essa minha lista guarda essas letras eu posso pedir para apagar uma determinada fatia, determinado intervalo, se fizer del 2.5, ele vai utilizar aquele mesmo esquema do fatiamento. Esqueci de colocar o nome da lista, del, lista 2.5. Ele apagou trecho da minha lista. De a cinco está aqui, o a estava na posição zero, ele não apagou. Não posição tinha o b, dois, três, quatro, quando chega no elemento cinco ele não executa o comando. Ele na verdade, apagou cinco menos quatro elementos do começo foram apagados, só sobrou nesse caso o primeiro e o último elementos da lista. A gente pode apagar determinado intervalo usando este comando del. Foi isso que a gente tinha que ver sobre listas. A gente pode tirar fatias de listas lembrar que quando a gente faz a atribuição de uma lista para outra variável a gente não está clonando a lista, apenas vai ter duas variáveis com referência para a mesma lista. Se eu quiser uma lista nova preciso clonar, colchete, dois pontos, colchete, é uma forma fácil de clonar uma lista. Pertinência, a gente pode ver se alguma coisa está in, dentro de uma determinada lista. Concatenação de listas, que a gente usa o sinal de mais para concatenar, grudar duas listas. Repetição de listas a gente usa a multiplicação, vezes cinco vai criar uma nova lista copiando cinco vezes o que tinha na outra lista e remoção de lista, pode remover elemento de uma determinada lista, pode remover uma fatia da lista. Enquanto estiver trabalhando com listas, se você tiver qualquer dúvida, uma boa coisa para você fazer é consultar a documentação de python. Se vai no docs.python.org esse endereço docs.pythn.org vai ter aqui uma série de tutoriais e documentações sobre org, sobre Python, particular, gosto dessa library reference. Sugere que mantenha isso debaixo de seu travesseiro. Por osmose você vai aprendendo. Quando era livro era fácil guardar baixo do travesseiro. Guardar website debaixo do travesseiro é pouco mais difícil, mas você encontra jeito. Mas clicando nessa biblioteca de referência tem informações sobre os tipos de coisas que você pode encontrar Python, particular, vamos buscar aqui por lista você vê aqui na seção 4.6 ela fala bastante sobre listas. Aqui tem uma série de comandos, por exemplo: x in s, é jeito de fazer pertinência. Concatenação de listas aqui a multiplicação, estão todas as operações ali, as fatias. Tem uma explicação de como essas coisas funcionam, tem até comandos que a gente não viu. É bom você dar uma olhada, vai aprender novas funções que existem listas, tem exemplos. Vale a pena você dar uma estudada aqui nessa referência. Quando tiver uma dúvida, você pode vir aqui e consultar. Por hoje é só. [MÚSICA] [MÚSICA] [MÚSICA]