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

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

Coleções: Listas Dilvan Moreira.

Apresentações semelhantes


Apresentação em tema: "Coleções: Listas Dilvan Moreira."— Transcrição da apresentação:

1 Coleções: Listas Dilvan Moreira

2 Lembrando ... Acessando um caractere numa String fruit = 'banana'
A primeira letra é conseguida através do índice zero. Valor 0 dentro do colchetes. fruit = 'banana' letter = fruit[0] print letter

3 Lembrando ... A função len retorna o número de caracteres de uma string: fruit = 'banana' print len(fruit)

4 Lembrando ... Criando sub-Strings: >>> s = 'MontyPython'
>>> print s[0:5] Monty >>> print s[5:11] Python

5 Lembrando ... Strings são imutáveis,
>>> greeting = 'Hello, world!' >>> new_greeting = 'J' + greeting[1:] >>> print new_greeting Jello, world!

6 Objetivos Aprender a usar coleções de dados e seus métodos: Listas.
Leitura: do livro “Think Python” Cap. 10

7 Lista É uma seqüência de valores, onde cada valor é identificado por um índice. O itens de uma lista são chamados elementos. Lista são similares a String Com a diferença que é possível ter uma lista com qualquer tipo de elemento.

8 Criar uma lista O primeiro exemplo á uma lista de quatro inteiros.
[10, 20, 30, 40] ['crunchy frog', 'ram bladder', 'lark vomit'] O primeiro exemplo á uma lista de quatro inteiros. O segundo é uma lista de três strings. Os elementos de uma lista não necessitam ser do mesmo tipo.

9 Criar uma lista A lista a seguir contém: ['spam', 2.0, 5, [10, 20]]
uma string, um valor float, um valor inteiro, e um lista: ['spam', 2.0, 5, [10, 20]] Uma lista dentro de outra lista é dita estar aninhada.

10 Criar uma lista A função range cria uma lista: >>> range(1,5)
[1, 2, 3, 4] Uma lista que não contém nenhum elemento é chamada de lista vazia e o resultado dela será [].

11 Criar uma lista >>> cheeses = ['Cheddar', 'Edam', 'Gouda'] >>> numbers = [17, 123] >>> empty = [] >>> print cheeses, numbers, empty Saída ['Cheddar', 'Edam', 'Gouda'] [17, 123] []

12 Listas são Mutáveis Para acessar um elemento da lista é a mesma sintaxe para acessar um caractere de um string >>> cheeses = ['Cheddar', 'Edam', 'Gouda'] >>> print cheeses[0] Cheddar

13 Listas são Mutáveis O operador colchete pode aparecer em qualquer lugar em uma expressão. Quando ele aparece no lado esquerdo de uma atribuição, ele modifica um dos elementos em uma lista. >>> numbers = [17, 123] >>> numbers[1] = 5 >>> print numbers [17, 5]

14 Operador in O operador in também funciona com listas.
>>> cheeses = ['Cheddar', 'Edam', 'Gouda'] >>> 'Edam' in cheeses True >>> 'Brie' in cheeses False

15 Operador for O operador for também funciona com listas.
cheeses = ['Cheddar', 'Edam', 'Gouda'] for cheese in cheeses: print cheese Funciona bem só para ler os elementos.

16 Operador for Para atualizar os itens, é necessário percorrer usando um índice. numbers = [1, 3, 6, 4] for i in range(len(numbers)): numbers[i] = numbers[i] * 2

17 Elementos de uma lista Quantos itens contém a lista acima? 4
Lista = ['sp', 1, ['1', '2', '2'], [1, 2, 3]] Quantos itens contém a lista acima? 4

18 Concatenação de Listas
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> c = a + b >>> print c [1, 2, 3, 4, 5, 6]

19 Operador * O operador * repete uma lista um número dado de vezes
>>> [0] * 4 [0, 0, 0, 0] >>> [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3]

20 Fatiamento de listas Da mesma forma em que strings.
>>> lista = ['a', 'b', 'c', 'd', 'e', 'f'] >>> lista[1:3] ['b', 'c'] >>> lista[:4] ['a', 'b', 'c', 'd']

21 Fatiamento de listas >>> lista = ['a', 'b', 'c', 'd', 'e', 'f'] >>> lista[3:] ['d', 'e', 'f'] >>> lista[:] ['a', 'b', 'c', 'd', 'e', 'f']]

22 Método append O Python fornece também métodos que operam sobre listas
Por exemplo, adiciona um novo elemento no final de uma lista >>> t = ['a', 'b', 'c'] >>> t.append('d') >>> print t ['a', 'b', 'c', 'd']

23 Método sort O método sort ordena a lista em ordem crescente.
>>> t = ['d', 'c', 'e', 'b', 'a'] >>> t.sort() >>> print t ['a', 'b', 'c', 'd', 'e']

24 Mapa, filtra e reduzir Para somar todos os números de uma lista:
def add_all(t): total = 0 for x in t: total += x return total Nota: total += x é equivalente à total = total + x

25 Mapa, filtra e reduzir Somando-se os elementos de uma lista:
>>> sum(t) 6 Usando a função sum:

26 Mapa, filtra e reduzir As vezes podemos percorrer uma lista para criar outra Função capitalize_all retorna uma nova lista que contem com strings capitalizadas: def capitalize_all(t): res = [] for s in t: res.append(s.capitalize()) return res

27 Mapa, filtra e reduzir Outra operação comum é selecionar alguns elementos de um lista e retorna uma sub-lista A função a seguir recebe uma lista de string e retorna uma lista que contém somente as letras maiúsculas: def only_upper(t): res = [] for s in t: if s.isupper(): res.append(s) return res

28 Deletando elementos Existem diversas maneiras para remover elementos de uma lista Veja a função pop abaixo: >>> t = ['a', 'b', 'c'] >>> x = t.pop(1) >>> print t ['a', 'c'] >>> print x b

29 Deletando elementos Se você não precisa do valor removido, use o operador del Veja a função del abaixo: >>> t = ['a', 'b', 'c'] >>> del t[1] >>> print t ['a', 'c']

30 Deletando elementos Se você conhecer o elemento e não souber o indice, use o operador remove Veja a função remove abaixo: >>> t = ['a', 'b', 'c'] >>> t.remove('b') >>> print t ['a', 'c']

31 Deletando elementos Para remover mais de um elemento, você pode utilizar o del com um pedaço de índices: Veja a função del abaixo: >>> t = ['a', 'b', 'c', 'd', 'e', 'f'] >>> del t[1:5] >>> print t ['a', 'f']

32 Listas e Strings Uma string é uma seqüência de caracteres
Uma lista é uma seqüência de valores Mas uma lista de caracteres não é o mesmo que uma string Converter uma string para uma lista de caracteres: >>> s = 'spam' >>> t = list(s) >>> print t ['s', 'p', 'a', 'm']

33 Listas e Strings A função anterior quebra uma string em letras, se você quiser quebrar uma string em palavras, veja: >>> s = 'pining for the fjords' >>> t = s.split() >>> print t ['pining', 'for', 'the', 'fjords']

34 Listas e Strings Um argumento opcional pode ser chamado para delimitar a quebra, seja abaixo: >>> s = 'spam-spam-spam' >>> delimiter = '-' >>> s.split(delimiter) ['spam', 'spam', 'spam']

35 Listas e Strings Para juntar é preciso uma lista de strings e concatenar os elementos, veja o código abaixo: >>> t = ['pining', 'for', 'the', 'fjords'] >>> delimiter = ' ' >>> delimiter.join(t) 'pining for the fjords'

36 Objetos e valores Considere as asserções: >>> a = 'banana'
>>> b = 'banana' Sabemos que se refere a mesma string, mas não sabemos se referem a mesma seqüência, existem dois casos possíveis:

37 Objetos e valores No primeiro caso a e b se referem a dois objetos
No segundo caso a e b se referem ao mesmo objeto Para verificar se duas variáveis se referem ao mesmo objeto você pode utilizar o operador is: >>> a = 'banana' >>> b = 'banana' >>> a is b True

38 Objetos e valores No primeiro caso a e b se referem a dois objetos
No segundo caso a e b se referem ao mesmo objeto Para verificar se duas variáveis se referem ao mesmo objeto você pode utilizar o operador is: >>> a = 'banana' >>> b = 'banana' >>> a is b True

39 Objetos e valores No exemplo anterior, python criou apenas um objeto string, e tanto a como b se referem a ele. Quando utilizamos duas listas, ele vai se referir a dois objetos distintos: >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> a is b False

40 Aliasing – “apelidando”
Se uma se refere a um objeto, atribuindo b = a, dessa forma teremos duas variaveis para o mesmo objeto. >>> a = [1, 2, 3] >>> b = a >>> b is a True

41 Aliasing – “apelidando”
A associação de uma variável com um objeto é chamado de referência Se o objeto referenciado é mutável, as alterações feitas com a variável afeta a outra: >>> a = [1, 2, 3] >>> b = a >>> b[0] = 17 >>> print a [17, 2, 3]

42 Aliasing – “apelidando”
Atenção: Embora este comportamento seja útil, ele pode ser passível de erro. Para objetos imutáveis, como strings, aliasing não é tanto um problema: a = 'banana' b = 'banana' Não se faz diferença se a e b se referem ao mesmo objeto.

43 Listas de argumentos Funções modificam os conteúdos das listas,
delete_head remove o primeiro elemento, veja: def delete_head(t): del t[0] Utilizando: >>> letters = ['a', 'b', 'c'] >>> delete_head(letters) >>> print letters ['b', 'c']

44 Listas de argumentos É importante distinguir entre as operações que modificam as listas das operações que criam novas! O método append modifica uma lista, as o operador + cria uma nova: >>> t1 = [1, 2] >>> t2 = t1.append(3) >>> print t1 [1, 2, 3] >>> print t2 None

45 Listas de argumentos >>> t1 = [1, 2]
>>> t3 = t1 + [3] >>> print t3 [1, 2, 3] >>> print t1 [1, 2]

46 Listas de argumentos Esta diferença é importante para quando você escrever uma função que ira modificar uma lista. A função abaixo não exclui a cabeça da lista: def bad_delete_head(t): t = t[1:] #WRONG! Nota: O operador de fatia cria uma nova lista e a atribuição faz t se referir a ela, mas nada que tenha efeito sobre a lista passada pelo argumento!

47 Listas de argumentos Uma alternativa é escrever uma função que cria e retorna a nova lista. A função tail retorna tudo, menos o primeiro elemento da lista. def tail(t): return t[1:] >>> letters = ['a', 'b', 'c'] >>> rest = tail(letters) >>> print rest ['b', 'c']

48 Listas de argumentos Exercício: Escreva uma função chamada chop que recebe uma lista e a modifica, removendo primeiro e ultimo elemento, e sem retornar valor.

49 Perguntas?


Carregar ppt "Coleções: Listas Dilvan Moreira."

Apresentações semelhantes


Anúncios Google