Programação I Aula 9 Listas e tuplos

Documentos relacionados
Introdução à Programação

24/09/2014. Prof. André Backes

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

Listas e Tuplas. Vanessa Braganholo

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Programação I Aula 10 Processamento de listas

FUNDAMENTOS DA PROGRAMAÇÃO 1º Teste, 19 de abril de 2013, 1h30m

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Introdução à Programação Aula 14 Dicionários

Introdução à Ciência da Computação Disciplina: Prof. Edison Ishikawa Python 3.0 Aula 05 Listas

Computação 1 - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings 1/ 26

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Listas. Prof. Alberto Costa Neto Programação em Python

Python: Listas. Claudio Esperança

Estruturas de Dados em Python

Introdução à Programação

PYTHON LISTAS. Introdução à Programação SI1

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Computação 1 - Python Aula 6 - Teórica: Listas 1/ 28

Programação I Aula 3 Primeiros programas

Introdução à Programação Aula 11 Mais sobre ciclos e iteração

TCC 00308: Programação de Computadores I Manipulação de listas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Um verificador de tautologia

Vetores. Vanessa Braganholo

Python. Resumo e Exercícios P2 Parte 1

Estrutura de Dados. Diego Silveira Costa Nascimento

Processamento da Informação Teoria. Exercícios sobre strings

Introdução à Programação Aula 3 Primeiros programas

Computação I - Python Aula 1 - Teórica: Manipulação de Strings, Tuplas e Listas

Fundamentos da Programação

Estruturas de dados funcionais

MCG126 Programação de Computadores II

Algoritmo e Programação Matemática LAÇOS E LISTAS

Computação 1 - Python Aula 4 - Teórica Variáveis e Atribuição, Strings. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 30

Computação I - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings

Aulas 10 e 11 / 18 e 20 de abril

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

1. Uma função é um módulo (subprograma) que realiza uma tarefa específica. 3. Ao chamar uma função, passamos argumentos, no mínimo 0 e no máximo n.

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos

Introdução à Programação Aula 19 Programação com objetos

Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Fundamentos da Programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

1 Expressões, valores e tipos 1. 2 Variáveis e atribuições 5. cálculo de expressões segue a estrutura de parênteses e as prioridades dos operadores

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas

Programação imperativa

Processamento da Informação Teoria. Strings

Introdução à Programação Aula 7 Resolução numérica de equações

Características de Python. Inteligência Artificial. Baixando e Instalando. Operadores. Variáveis. Strings 9/10/2010

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Transcrição:

Programação I Aula 9 Listas e tuplos Pedro Vasconcelos DCC/FCUP 2017 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 1 / 29

Nesta aula 1 Listas 2 Tuplos Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 2 / 29

Listas Sequências ordenadas de elementos Podem conter elementos de quaisquer tipos Possivelmente com repetições Os elementos são identificados por índices Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 3 / 29

Exemplo >>> alimentos = ["pão", "pão", "queijo", "queijo"] >>> alimentos[0] pão >>> alimentos[1] pão >>> alimentos[2] queijo >>> len(alimentos) 4 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 4 / 29

Listas por extensão Lista com n elementos: [e1, e2,..., en] A ordem é significativa Podem ocorrer elementos repetidos Pode ser a lista vazia: [] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 5 / 29

Acesso aos elementos Operador de indexação: lista[i] Índices entre 0 e len(lista)-1 Índices negativos: acesso a partir do fim Índices inválidos dão um erro de execução Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 6 / 29

Fatias lst[i:j] elementos entre i e j 1 inclusíve lst[i:] elementos entre i até ao final lst[:j] elementos do primeiro até j 1 inclusíve lst[:] todos os elementos (cópia da lista) >>> vogais = [ a, e, i, o, u ] >>> vogais[1:4] [ e, i, o ] >>> vogais[:3] [ a, e, i ] >>> vogais[3:] [ o, u ] >>> vogais[:] [ a, e, i, o, u ] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 7 / 29

Fatias (cont.) Forma geral lst[i:j:k] elementos de i a j 1 com incrementos k Incrementos negativos: percorrer a lista ao contrário. >>> vogais[::2] # índices pares [ a, i, u ] >>> vogais[1::2] # índices ímpares [ e, o ] >>> vogais[::-1] # inverter a lista [ u, o, i, e, a ] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 8 / 29

Percorrer os índices e elementos for i in range(len(lista)): print(i, lista[i]) Ciclo sobre índices i de 0 até len(lista) 1 Elemento lista[i] associado ao índice i Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 9 / 29

Percorrer todos os elementos for valor in lista: print(valor) Evita manipular explicitamente o índice Preferível quando necessitamos dos valores mas não dos índices Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 10 / 29

Operações com listas + concatenação n* repetição (n vezes) >>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a + b [1, 2, 3, 4, 5, 6] >>> 3*a [1, 2, 3, 1, 2, 3, 1, 2, 3] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 11 / 29

Listas são mutáveis Podemos modificar ou acrescentar elementos: >>> beatles = [1, 2, 3] >>> beatles[0] = "john" >>> beatles[2] = "ringo" >>> beatles [ john, 2, ringo ] >>> beatles[1:2] = [ paul, george ] >>> beatles [ john, paul, george, ringo ] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 12 / 29

Remover elementos duma lista >>> beatles = [ john, paul, george, ringo ] >>> del beatles[0] >>> beatles [ paul, george, ringo ] Alternativa: >>> beatles = [ john, paul, george, ringo ] >>> beatles[0:1] = [] >>> beatles [ paul, george, ringo ] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 13 / 29

Nomes e objectos É importante distinguir o nome de uma variável da coleção de valores associada a esse nome. Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 14 / 29

Nomes e objectos (1) Dois nomes, duas listas separadas: >>> a = [1,2,3] >>> b = [1,2,3] >>> a[0] = oops >>> print(a, b) [ oops, 2, 3] [1, 2, 3] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 15 / 29

Nomes e objectos (2) Dois nomes, apenas uma lista: >>> a = [1,2,3] >>> b = a >>> a[0] = oops >>> print(a, b) [ oops, 2, 3] [ oops, 2, 3] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 16 / 29

Nomes e objectos (3) Dois nomes, duas listas (fazendo uma cópia): >>> a = [1,2,3] >>> b = a[:] >>> a[0] = oops >>> print(a, b) [ oops, 2, 3] [1, 2, 3] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 17 / 29

Métodos sobre listas Alguns métodos pré-definidos: append acrescentar um elemento ao final insert acrescentar um elemento numa posição remove remover um elemento sort ordenar os elementos por ordem crescente Utilização: lista.método(argumentos) Modificam a lista Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 18 / 29

Exemplos >>> beatles = [ john, paul ] >>> beatles.append( george ) >>> beatles.append( ringo ) >>> beatles [ john, paul, george, ringo ] >>> beatles.insert(0, paul ) >>> beatles [ paul, john, paul, george, ringo ] >>> beatles.sort() >>> beatles [ george, john, paul, paul, ringo ] Para obter mais informação: >>> help(list) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 19 / 29

Listas dentro de listas As listas podem conter outras listas Podemos assim representar tabelas ou matrizes >>> matriz = [[1,2,-1], [3,1,0], [0,1,-2]] >>> matriz[1][0] 3 >>> matriz[1][0] = -3 >>> matriz [[1, 2, -1], [-3, 1, 0], [0, 1, -2]] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 20 / 29

Tuplos Sequências ordenadas de elementos: (e1, e2,..., en) Acesso aos elementos por índices Ao contrário das listas, os tuplos são imutáveis Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 21 / 29

Exemplo >>> nota = ( Pedro, 12) >>> nota[0] Pedro >>> nota[1] 12 >>> nota[0] = Joao TypeError: tuple object does not support item assignment Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 22 / 29

Operações sobre tuplos Operadores + e * análogos aos de listas: >>> nt1 = ( Pedro, 12) >>> nt2 = ( Joao, 14) >>> nt1 + nt2 ( Pedro, 12, Joao, 14) >>> 3*nt1 ( Pedro, 12, Pedro, 12, Pedro, 12) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 23 / 29

Atribuição a tuplos de variáveis >>> (x,y) = (5,-7) >>> x 5 >>> y -7 Ou simplesmente: >>> x,y = 5,-7 >>> x 5 >>> y -7 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 24 / 29

Listas e tuplos combinados Vamos representar uma agenda como uma lista de pares nome/email: [( Pedro Vasconcelos, pbv@dcc.fc.up.pt ), ( Pedro Brandão, pbrandao@dcc.fc.up.pt ), ( João Pedro Pedroso, jpp@dcc.fc.up.pt )] Operações: acrescentar uma entrada (nome e email) procurar email pelo nome Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 25 / 29

Acrescentar uma entrada def acrescentar(agenda, nome, email): "Acrescentar um nome e email à agenda." agenda.append((nome,email)) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 26 / 29

Procurar um nome (1) def procurar(agenda, txt): "Procurar emails por parte do nome." emails = [] for par in agenda: if txt in par[0]: # txt ocorre no nome? emails.append(par[1]) # acrescenta email return emails Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 27 / 29

Procurar um nome (2) def procurar(agenda, txt): "Procurar emails por parte do nome." emails = [] for (nome,email) in agenda: if txt in nome: # txt ocorre no nome? emails.append(email) # acrescenta email return emails Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 28 / 29

Exemplos >>> agenda = [] >>> acrescentar(agenda, "Pedro Vasconcelos", "pbv@dcc.fc.up.pt") >>> acrescentar(agenda,"joão Pedro", "jpp@dcc.fc.up.pt") >>> procurar(agenda, "João") [ jpp@dcc.fc.up.pt ] >>> procurar(agenda, "Pedro") [ pbv@dcc.fc.up.pt, jpp@dcc.fc.up.pt ] Pedro Vasconcelos (DCC/FCUP) Programação I Aula 9 Listas e tuplos 2017 29 / 29