24
Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) João Pedro Pedroso 2019/2020

Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Programação I / Introdução à ProgramaçãoCapítulo 5, "Data types" (listas e tuplos)

João Pedro Pedroso

2019/2020

Page 2: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Última aula:I Typos de dados: Strings

Hoje:I Listas e tuplos

Page 3: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Listas

I Sequências ordenadas possivelmente com repetiçõesI Podem conter elementos de quaisquer tiposI Os elementos são identificados pelos índices

Page 4: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Listas por extensão

I Lista com n elementos: [e1, e2, ..., en]I A ordem é significativaI Podem ocorrer elementos repetidosI Pode ser a lista vazia: []

Page 5: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Operações básicasI comprimento

>>> len([1,’dois’,3])3

I concatenação

>>> [1,’dois’,3]+[4,5,6][1,’dois’,3,4,5,6]

I repetição

>>> 2*[1,’dois’,3][1,’dois’,3,1,’dois’,3]

I pertença

>>> 3 in [1,’dois’,3]True

I iteração

>>> for x in [1,’dois’,3]:print(x)

1dois3

Page 6: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Acesso aos elementos

I Operador de indexação: lista[i]I Índices entre 0 e len(lista)-1I Índices negativos: acesso a partir do fimI Índices inválidos dão um erro de execução

Page 7: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Exemplo

>>> alimentos = [’pão’, ’pão’, ’queijo’, ’queijo’]>>> alimentos[0]’pão’>>> alimentos[1]’pão’>>> alimentos[2]’queijo’>>> len(alimentos)4

Page 8: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Fatias

lst[i:j] elementos entre i e j − 1 inclusívelst[i:] elementos entre i até ao finallst[:j] elementos do primeiro até j − 1 inclusívelst[:] 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’]

Page 9: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Fatias: Forma geral

lst[i:j:k] elementos de i a j − 1 com incrementos kI 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’]

Page 10: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Percorrer todos os elementos

for valor in lista:print(valor)

I Evita manipular explicitamente o índiceI Preferível quando necessitamos dos valores mas não dos índices

Page 11: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Percorrer os índices e elementos

for i in range(len(lista)):print(i, lista[i])

I Ciclo sobre índices i de 0 até len(lista)− 1I Elemento lista[i ] associado ao índice i

Page 12: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Percorrer os índices e elementos → melhor forma

for (i,v) in enumerate(lista):print(i, v)

Page 13: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Operações com listas

+ concatenaçãon * 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]

Page 14: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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

Page 15: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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

Page 16: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Nomes e objectos

I É importante distinguir o nome da lista dos valores associados.I Pensar na posição da memória do computador ondes os valores

estão guardados, e numa referência para esse local

Page 17: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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]

Page 18: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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]

Page 19: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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]

Page 20: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Métodos sobre listas

Alguns métodos pré-definidos:append acrescentar um elemento ao finalinsert acrescentar um elemento numa posiçãoremove remover um elemento

sort ordenar os elementos por ordem crescenteNotas:I Utilização: lista.método(argumentos)I Modificam a lista

Page 21: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

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)

Page 22: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Listas dentro de listas

I As listas podem conter outras listasI 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]]

Page 23: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Noções estudadas

listas

Page 24: Programação I / Introdução à Programaçãojpp/Prog1920/teorica-11_lists.pdf · Programação I / Introdução à Programação Capítulo 5, "Data types" (listas e tuplos) JoãoPedroPedroso

Próxima aulaI Tipos de dados do Python: tuplos