A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA

Apresentações semelhantes


Apresentação em tema: "LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA"— Transcrição da apresentação:

1 LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
LUCAS HENRIQUE SILVA

2 Uma lista é uma sequência
Assim como uma string, uma lista é uma sequência de valores: Perceba que, diferentemente de uma string, os valores de uma lista podem ser de qualquer tipo Os elementos da lista também não precisam ser todos do mesmo tipo: Assim, podemos até mesmo adicionar uma lista dentro de outra. Quando isso acontece, dizemos que uma lista está aninhada em outra lista. >>> [40,50,60,70] >>> [‘UFAL’,’Engenharia’,’IC’] >>> [‘UFAL’, 2016, 10.0, [40,50]]

3 Uma lista é uma sequência
Como já era de se esperar, podemos atribuir variáveis às listas que criamos: Uma lista que não contém elementos é, naturalmente, chamada de lista vazia Execute a instrução a seguir: Note que, no caso da última lista, serão impressos apenas colchetes vazios, semelhante ao que acontecia com uma string vazia (ao imprimir uma string vazia obtinhamos apenas ‘ ’) >>> frutas = [‘goiaba’, ’abacaxi’, ’pera’] >>> numeros = [100, 200, 300] >>> vazio = [ ] >>> print(frutas,numeros,vazio)

4 Listas podem ser modificadas
Podemos acessar os elementos de uma lista da mesma forma que acessamos os caracteres de uma string: Agora experimente: Utilizando os comandos acima, é possível alterar qualquer elemento de uma lista quantas vezes se desejar >>> frutas = [‘goiaba’, ’abacaxi’, ’pera’] >>> frutas [2] ‘pera’ >>> frutas = [‘goiaba’, ’abacaxi’, ’pera’] >>> print(frutas) >>> frutas [2] = ‘manga’

5 Listas podem ser modificadas
Ao alterarmos um elemento qualquer da lista, estaremos fazendo uma reatribuição, da mesma forma que acontece com variáveis comuns O diagrama abaixo deixa claro como funciona esse processo: Dessa forma, as listas serão representadas por “caixas” contendo determinados elementos dentro frutas 0 ‘goiaba’ ‘abacaxi’ ‘pera’ ‘manga’ índices dos elementos

6 Listas podem ser modificadas
Os índices dos elementos de uma lista funcionam da mesma maneira que os índices das strings: Qualquer número inteiro pode ser usado como índice Se tentarmos ler ou imprimir um elemento que não existe, teremos um IndexError Se um índice tiver valor negativo, ele contará os elementos da lista de trás para frente O operador in também funciona com listas >>> frutas = [‘goiaba’, ’abacaxi’, ’pera’] >>> ‘abacaxi’ in frutas True >>> ‘melancia’ in frutas False

7 Operações com listas O que você acha que irá acontecer ao executarmos os comandos abaixo? O operador + realiza a concatenação de listas De modo semelhante: >>> x = [1,2,3] >>> y = [4,5,6] >>> z = x + y >>> [1] * 4 [1,1,1,1] >>> y*3 [4,5,6,4,5,6,4,5,6,]

8 Fatias de listas O operador de fatias utilizado em strings funciona exatamente da mesma forma em listas: Execute os comandos: Portanto, podemos alterar os valores de vários elementos da lista ao mesmo tempo >>> letras = [‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’] >>> letras [2:5] [‘c’,’d’,’e’] >>> letras [:3] [‘a’,’b’,’c’] >>> letras [4:] [‘e’,’f’,’g’,’h’] >>> letras = [‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’] >>> letras[3:6] = [‘x’,’y’,’z’] >>> print(letras)

9 Fatias de listas Uma vez que as listas podem ter seus elementos alterados facilmente, é útil criar uma cópia destas antes de efetuar tais alterações Para isso, utilizamos o comando: Feito isso, podemos efetuar quaisquer alterações na nova lista criada e a lista original permanecerá inalterada >>> letras = [‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’] >>> nova_lista = letras [:] >>> nova_lista [‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’]

10 Métodos de listas O Python fornece alguns métodos para operarmos com listas. Por exemplo: Assim, o método append() permite adicionar o valor fornecido como argumento a uma lista já criada Agora tente: Esse método permite adicionar apenas um elemento por vez à lista >>> vogais = [‘a’,’e’,’i’,’o’] >>> vogais.append(‘u’) >>> vogais [‘a’,’e’,’i’,’o’,’u’] >>> vogais = [‘a’,’e’,’i’] >>> vogais.append(‘o’,‘u’)

11 Métodos de listas Para adicionarmos dois ou mais elementos de uma só vez, podemos fazer o seguinte: O método extend() recebe como argumento uma lista e adiciona todos os elementos dessa lista à outra lista onde está sendo aplicado A lista vogais_restantes permanecerá inalterada ao fim do processo >>> vogais = [‘a’,’e’,’i’] >>> vogais_restantes = [’o’,’u’] >>> vogais.extend(vogais_restantes) >>> vogais [‘a’,’e’,’i’,’o’,’u’]

12 Reduzir, Mapear e filtrar
Observe a função a seguir: Sabendo que o argumento x fornecido é uma lista de inteiros, como você descreveria o funcionamento da função? A variável soma desempenha o papel de acumulador na função, pois é adicionada, a cada iteração, a um valor da lista Esse tipo de operação, que combina uma sequência de valores (elementos de uma lista) em um único valor (variável soma), é chamada redução Equivalente à: soma = soma + elemento >>> def soma_elementos(x): >>> soma = 0 >>> for elemento in x: >>> soma += elemento >>> return soma

13 Reduzir, Mapear e filtrar
Considere esta outra função: Assim, a função acima recebe uma lista de strings como argumento e retorna uma nova lista com todas as strings maiúsculas Tente entender, em detalhes, como a função funciona O tipo de operação realizado pela função apresentada é chamado de mapeamento, porque ela aplica um mesmo método (capitalize()) a cada um dos elementos da lista fornecida >>> x = [‘a’,’b’,’c’] >>> def deixa_maiusculo(x): >>> maiusc = [ ] >>> for ele in x: >>> maiusc.append(ele.capitalize()) >>> return maiusc

14 Reduzir, Mapear e filtrar
Observemos agora mais uma função: isupper() é um método de strings que retorna True se a string contém apenas letras maiúsculas Assim, a função acima recebe uma lista de strings e retorna uma outra lista que contém apenas as strings maiúsculas Esse tipo de operação é denominado filtração, pois apenas alguns elementos específicos são selecionados para compor a nova lista >>> x = [‘a’,’B’,’c’,’D’] >>> def somente_maiusculo(x): >>> maiusc = [ ] >>> for ele in x: >>> if(ele.isupper()): >>> maiusc.append(ele) >>> return maiusc

15 Deletando elementos Também é possível excluir elementos de uma lista. Existem várias formas de fazermos isso: Neste caso, o método pop(ind) exclui o elemento da lista com índice igual ao argumento “ind” dado e retorna o valor. Se não repassarmos um índice, o último elemento será excluído e retornado. É útil apelarmos para esse método quando ainda quisermos utilizar o valor que será excluído da lista >>> x = [‘a’,’b’,’c’] >>> y = x.pop(2) >>> x [‘a’,’b’] >>> y ‘c’

16 Deletando elementos Se não formos mais precisar do valor que será excluído, podemos fazer: Quando conhecermos o elemento que queremos remover, mas não o seu índice, faremos: >>> x = [‘a’,’b’,’c’] >>> del x[2] >>> x [‘a’,’b’] >>> x = [‘a’,’b’,’c’] >>> x.remove(‘c’) >>> x [‘a’,’b’]

17 Deletando elementos Para excluir vários elementos de uma só vez:
Como sempre, ao utilizarmos o fatiamento, o comando será aplicado a todos os elementos a partir do índice da esquerda até o índice da direita menos um >>> x = [‘a’,’b’,’c’,’d’,’e’] >>> del x[0:2] >>> x [‘c’,’d’,’e’]

18 Listas e Strings Uma string é uma sequência de caracteres e uma lista é uma sequência de valores. Uma lista de caracteres, entretanto, não é a mesma coisa que uma string Para converter uma string em uma lista de caracteres, fazemos: Portanto, a função pronta list() “quebra” a string em letras individuais e cada uma dessas letras passa a ser um elemento da lista criada >>> s = ‘UFAL’ >>> lista = list(s) >>> lista [‘U’,’F’,’A’,’L’]

19 Listas e Strings Se quisermos separar a string em palavras inteiras ao invés de letras, podemos fazer: Um tipo de argumento especial chamado delimitador determina qual caractere deve ser usado como divisor de informações. Por exemplo: >>> s = ‘Engenharia Ambiental 2016’ >>> lista = s.split() >>> lista [‘Engenharia’, ’Ambiental’,’2016’] >>> s = ‘Engenharia-Ambiental-2016’ >>> delimitador = “-” >>> lista = s.split(delimitador) >>> lista [‘Engenharia’, ’Ambiental’,’2016’]

20 Listas e Strings Agora experimente:
O método .join() realiza o processo inverso ao split(). Ele pega uma lista de strings e concatena os elementos em uma única string. Perceba que nós invocamos o método sobre uma string ‘ ’ e fornecemos a lista como argumento. Ao utilizamos o delimitador como um espaço em branco, a string formada terá suas palavras separadas por espaço. Se quiséssemos concatenar a string com hífens separando as palavras, poderíamos utilizar “-” como delimitador >>> lista = [‘Engenharia’, ’Ambiental’,’2016’] >>> delimitador = ‘ ‘ >>> s = delimitador.join(lista) >>> s ‘Engenharia Ambiental 2016’

21 Objetos e valores Tente o seguinte código:
Nós sabemos que a e b se referem à uma string, mas não sabemos se elas se referem à mesma string. Há duas possibilidades: a e b podem se referir a objetos diferentes com mesmo valor, ou, podem se referir ao mesmo objeto. Para saber quando duas variáveis se referem ao mesmo objeto, você pode utilizar o operador in. >>> a = ‘chocolate’ >>> b = ‘chocolate’ >>> a = ‘chocolate’ >>> b = ‘chocolate’ >>> a is b True

22 Objetos e valores Neste exemplo, o Python criou apenas um objeto string e as variáveis a e b fazem referência ele. Quando você cria listas, você tem dois objetos diferentes: Neste caso, podemos dizer que as duas listas são equivalentes, pois têm os mesmo elementos. Mas elas não são idênticas, pois elas não são os mesmos objetos. >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> a is b False

23 Serrilhamento Se a se refere a um objeto e você fizer b = a, então ambas variáveis vão fazer referência ao mesmo objeto. Um objeto com mais de uma referência tem mais de um nome, então dizemos que o objeto é serrilhado. Se o objeto serrilhado é mutável, se fazemos mudanças em um, mudamos o outro. >>> a = [1, 2, 3] >>> b = a >>> b is a True >>> b[0] = 42 >>> a [42, 2, 3]

24 Lista e argumentos Quando você passa uma lista à uma função, a função obtém a referência à lista. Se a função modifica a lista, a mudança será feita no objeto original. Veja como isto funciona: O parâmetro t e a variável letras são serrilhamentos do mesmo objeto. def delete_head(t): del t[0] >>> letras = ['a', 'b', 'c'] >>> delete_head(letras) >>> letras ['b', 'c']

25 Lista e argumentos É importante distinguir operações que modificam listas e operações que criam novas listas. Por exemplo, o método .append() modifica a lista: O método .append() modifica a lista e retorna None. >>> t1 = [1, 2] >>> t2 = t1.append(3) >>> t1 [1, 2, 3] >>> t2 None

26 Lista e argumentos Veja agora o operador +: >>> t3 = t1 + [4]
O operador + cria uma lista nova e deixa a lista anterior sem nenhuma mudança. >>> t3 = t1 + [4] >>> t1 [1, 2, 3] >>> t3 [1, 2, 3, 4]

27 Lista e argumentos Isto é importante quando você cria funções que supostamente modificam listas. Por exemplo, a seguinte função NÃO elimina o primeiro elemento da lista: Esta operação utilizando os dois pontos cria uma nova lista e atribui à variável t, mas não altera a lista original passada como argumento. def bad_delete_head(t): t = t[1:] # ERRADO! >>> t4 = [1, 2, 3] >>> bad_delete_head(t4) >>> t4 [1, 2, 3]

28 Lista e argumentos Uma alternativa é escrever uma função que cria e retorna uma nova lista. Esta operação deixa a lista original inalterada. def tail(t): return t[1:] >>> letters = ['a', 'b', 'c'] >>> rest = tail(letters) >>> rest ['b', 'c']

29 Estudo de Caso: Soma de Matrizes
Você deve criar uma função que recebe como argumento duas matrizes e executa a sua soma Para isso, crie funções para criar matrizes a partir de dados do usuário e para imprimir matrizes.

30 Como criar uma matriz? Uma matriz nada mais é do que listas encadeadas. Você já deve saber como criar uma lista com dados do usuário. A função cria_lista(n) que cria uma lista com n elementos a partir de dados do usuário: def cria_lista(n): lista=[] for i in range (n): x = int(input(“Insira um número: ”)) lista.append(x) return lista

31 Como criar uma matriz? Para criar uma matriz n X m basta criar outra função: Note que o usuário digitará a matriz de linha em linha. def cria_matriz(n,m): matriz=[] for i in range(n): linha=cria_lista(m) matriz.append(linha) return matriz

32 Imprimindo matrizes Se você tiver a seguinte matriz:
O Python imprime matrizes apenas como se fossem listas comuns. Criamos uma função que imprime a matriz de uma maneira a facilitar a visualização. >>> a = [[1, 2], [3, 4]] >>> a [[1, 2], [3, 4]] >>> print(a) def imprime_matriz(matriz): for linha in matriz: for e in linha: print(“%i” % e, end=“ “) print()

33 Tamanhos de matrizes Dada uma matriz, como saber as dimensões da matriz? Crie uma função pode_somar(). Crie uma função que faz o seguinte: A função dimensao() deve receber uma matriz como argumento e retornar uma lista contendo a quantidade de linhas e de colunas. >>> a = [[1, 2, 3], [4, 5, 6]] >>> dimensao(a) [2, 3]

34 Soma de matrizes Quando é possível somar duas matrizes?
Crie uma função que recebe como argumento duas matrizes e retorna uma matriz representando a soma das outras duas matrizes.

35 Mais sobre matrizes Existem bibliotecas que facilitam o trabalho com matrizes. Numpy é uma delas. Para instalar a biblioteca Numpy vá na pasta Scripts dentro da pasta de instalação do Python, normalmente instalado em “C://Python35/Scripts”. Segure a tecla Ctrl e clique com o botão direito do mouse em algum espaço em branco da pasta. Em seguida clique em “abrir janela de comando aqui” como na imagem:

36 Instalando bibliotecas
Em seguida, execute o comando “pip install numpy” Para ver se a biblioteca funcionou abra o idle do Python e tente importar a biblioteca: Se não ocorrer erros, então está tudo certo! >>> import numpy

37 Biblioteca Numpy Aplicação da biblioteca
Para saber mais, acesse numpy/ >>> from numpy import zeros, matrix >>> a = zeros([2, 2]) >>> a[(1,1)]=5 >>> a array([[ 0., 0.], [ 0., 5.]]) >>> b = [[1, 2], [3, 4]] >>> b = matrix(b) >>> b matrix([[ 1, 2], [ 3, 4]])

38 Exercícios Escreva uma função chamada soma_encadeada() que recebe uma lista de listas de inteiros e soma todos os elementos de todas as linhas encadeadas. Escreva uma função chamada soma_acumulada() que recebe uma lista de números e retorna uma lista com a soma acumulada. >>> t = [[1, 2], [3], [4, 5, 6]] >>> soma_encadeada(t) 21 >>> t = [1, 2, 3] >>> soma_acumulada(t) [1, 3, 6]

39 Exercícios Crie uma função chamada meio() que recebe uma lista como argumento e retorna todos elementos exceto o primeiro e o último. Crie uma função chamada corte(), que recebe uma lista como argumento e exclui o primeiro e o último elemento da lista e retorna None. >>> t = [1, 2, 3, 4] >>> meio(t) [2, 3] >>> t = [1, 2, 3, 4] >>> corte(t) >>> t [2, 3]

40 Exercícios Crie uma função chamada estah_ordenada() que recebe uma lista como parâmetro e retorna True se a lista estiver ordenada em ordem crescente e False caso contrário. Duas palavras são anagramas se você consegue rearranjar as letras de uma para escrever outra. Escreva uma função eh_anagrama() que recebe duas strings e retorna True se elas são anagramas e retorna False caso contrário. >>> estah_ordenada([1, 2, 2]) True >>> estah_ordenada(['b', 'a']) False

41 Exercícios Escreva uma função chamada tem_repetições() que recebe uma lista como argumento e retorna True se algum elemento aparece mais de uma vez e False caso contrário. Crie uma função chamada multiplica_matrizes() que recebe como argumento duas matrizes e retorna a matriz multiplicação caso seja possível.


Carregar ppt "LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA"

Apresentações semelhantes


Anúncios Google