Coleções: Listas Dilvan Moreira.

Slides:



Advertisements
Apresentações semelhantes
Instrutor: Nilo Menezes
Advertisements

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
VARIÁVEIS EM C Dilvan Moreira. Lembrando...  Variável: nome de um local na memória onde dados são armazenados  Evita ter que lembrar um endereço numérico.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Disciplina:PROA3V José Henrique Verhalem e Renan Tenório Professor: Alexandre Cassimiro Novembro 2015.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Variáveis e Atribuições.
1) Defina sequências numéricas.
Introdução à Computação para Engenharia MAC2166
RODOLFO SOARES TEIXEIRA OBMEP NA ESCOLA
Estudo de caso: Seleção de estrutura de dados
Recursividade, Entrada pelo teclado e Funções com retorno
Introdução à Programação
Tuplas CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
DICIONÁRIOS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
Produção da Material Didática para o Ensino de Matemática
Introdução a Programação
Programação em C Aula 8.
LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA
Estruturas de Repetição
Linguagem C Para programadores Python
Módulo I Capítulo 3: Fluxo de Código e Operador Condicional
Prof. Wellington Franco
O Problema dos Leitores e Escritores
Desenvolvimento de Programas, Composição
Programação Orientada a Objetos em Python
PIT – PROGRAMA INTERNO DE TREINAMENTO 2015
FUNDAMENTO DE PROGRAMAÇÃO
IP – Repetições Prof. Eduardo Falcão.
Introdução à Programação
VETORES.
Dilvan Moreira (baseado no livro Big Java e T. Munzner)
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Agenda Tipos de Informação Tipos de Dados Variáveis Constantes
Programação Orientada a Objetos
Python: Conjuntos Claudio Esperança.
Programação para Internet Rica
Binário, Hexadecimal, Decimal
Complexidade de Algoritmos
LÓGICA DE PROGRAMAÇÃO Estruturas de Decisão
Linguagem de Programação II
Linguagem PASCAL Tipos Estruturados
FUNDAMENTOS DA GESTÃO DE PROCESSOS Business Process Modeling Notation
EDA - Prof. Paulemir Campos
Laboratório I Mateus Raeder.
Filas Prof. Kariston Pereira
Laboratório I Mateus Raeder.
PL/SQL Triggers e Procedures
Filas.
ALGORITMOS.
Arrays de caracteres: strings
ALGORITMOS.
O que você deve saber sobre
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Python: Comandos Básicos
Introdução a progrmação Comandos condicionais: if e switch
Aula 11 Professores: Conteúdo: Dante Corbucci Filho
Constantes, Variáveis e Memória
Programação Funcional
RESULUÇÃO DOS EXERCÍCIOS E
Percorrendo coleções com Iterator
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
Sistemas de Informação
Aula 8 Professores: Conteúdo: Dante Corbucci Filho
MATEMÁTICA.
Aula 10 Professores: Conteúdo: Dante Corbucci Filho
Aula 3 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Coleções: Listas Dilvan Moreira

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

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

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

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

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

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.

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.

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.

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á [].

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

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

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]

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

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.

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

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

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

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]

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']

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

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']

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']

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

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

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

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

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

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']

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']

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']

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']

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']

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']

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'

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:

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

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

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

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

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]

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.

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']

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

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

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!

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']

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.

Perguntas?