Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários...

29
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações –UFF 2º semestre/2012

Transcript of Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários...

Page 1: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Prof. Natalia Castro Fernandes

Mestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Relembrando...� Tipos primitivos

� Simples (int, long, float, complex, string)

� Compostos� Listas� Listas

� Dicionários

� Tuplas

� Conjuntos

� Definidos pelo usuário� Classes

Page 3: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Listas� Estrutura para armazenar uma sequência de elementos� Em Python:

� Usadas para representar sequências� Usadas para criar matrizes� Usadas para criar matrizes� Acesso sequêncial e direto por meio de índices� Podem ser criadas com qualquer tipo de elemento� Operações semelhantes às das strings

� Indexação� Fatiamento� Concatenação (+)� Repetição (*)

Atenção: Listas permitem que elementos indexados sejam modificados, mas strings

não permitem essa operação.

Page 4: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Listas� Lista vazia

� A= []

� Lista com inteirosA = [1,2,3]� A = [1,2,3]

� Lista com elementos genéricos (inclusive outras listas)� A = [1, 'a', 2+3j, ['ab', 'CD']]

Page 5: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Acesso aos elementos da lista� 1º elemento: 0

� Último elemento: -1

Lista = [1,2,3,4]� Lista = [1,2,3,4]

Page 6: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Inserindo elementos em listas� Não é permitido colocar um elemento em uma posição

não existente

� A lista deve ser inicializada com as posições que serão necessárias necessárias

� Existem funções específicas para inserir novas posições na lista

Page 7: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Inserindo elementos em listas

Page 8: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Concatenação e repetição� L1 = [‘a’, ‘b’]

� L2 = [1,2]

� L1+L2 = [‘a’, ‘b’, 1, 2]

L2+L1 = [1, 2, ‘a’, ‘b’]� L2+L1 = [1, 2, ‘a’, ‘b’]

� L2*3 = [1, 2, 1, 2, 1, 2]

� Criando lista de ‘0’s: [0]*5 = [0, 0, 0, 0, 0]

Page 9: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Operações em listas� Deletar um elemento

Page 10: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Exercício� Na lista a seguir:

� L = [1,2,3,[‘a’, ‘b’, ‘c’],4, [5,6]]

1. Retire o elemento ‘3’1. Retire o elemento ‘3’

2. Retire o elemento ‘b’

3. Retire a lista [5,6]

4. Troque o elemento 2 pela lista [1,2,3]

Page 11: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Fatiamento� Obter ou atribuir um valor a uma parte de uma lista

Page 12: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Fatiamento� Fatiamento com espaçamento

� Valor do espaçamento definido após o intervalo

Page 13: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Atribuição de valores� As variáveis list criam referências

� Semelhante a ideia de ponteiros

� Atribuir uma lista a outra cria uma referência e não uma nova listanova lista

Page 14: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Atribuição de valores� Operador is indica se duas listas são a mesma ou são

diferentes espaços da memória� Uso:

� Lista1 is Lista2� Lista1 is Lista2

� Resposta:� True ou False

Page 15: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Verificação de presença� Operador in

� Verifica se um elemento pertence a uma lista ou a uma string

Page 16: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Funções úteis� len(lista)

� Retorna o número de elementos na lista

� min(lista)Retorna o menor valor da lista� Retorna o menor valor da lista

� max(lista)� Retorna o maior valor da lista

� list(string)� Transforma a string em uma lista

Page 17: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Funções úteis� range(inicio, parada, incremento)

� Gera uma PA com inicio em inicio, limite em parada e razão incremento

� inicio vale, por padrão,0, e incremento, 1� inicio vale, por padrão,0, e incremento, 1

Page 18: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Comando for� Permite iterar sobre os elementos de uma lista

� Formato:� for variavel in lista:

açõesações

� Gera um laço com um número de iterações igual ao tamanho da lista� Em cada iteração, o valor de variável recebe um item da

lista

Page 19: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Comando for

Page 20: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Comparação de listas� Feita da esquerda para a direita

� Se elementos diferentes na mesma posição são encontrados, então é possível dizer qual a maior lista

� string>lista>numero

Page 21: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Classe list� As listas criadas anteriormente são objetos da classe list

� Métodos da classe list� Usados como objeto.método()

� Exemplos:� Exemplos:� Lista.reverse() � Inverte ordem de elementos

� Lista.append(elemento) � Insere elemento no fim da lista

� Lista.count(elemento) � Retorna quantas vezes o elemento aparece na lista

� Lista.extend(Lista2)�Insere elementos de Lista2 no final de Lista1

� Lista.index(elemento)� Retorna o índice da primeira ocorrência de elemento; Erro, caso o elemento não exista

Page 22: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Classe list� Lista.insert(índice, elemento) � insere o elemento na posição

indicada por índice

� Lista.pop(índice) � Remove da lista o elemento de índice e o retorna; Se índice for omitido (pop() ), então assume-se o último elementoúltimo elemento

� Lista.remove(elemento) � Remove primeira aparição de elemento da Lista; Erro, caso elemento não exista

� Lista.sort() � Ordena os elementos de uma lista

Page 23: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Matrizes

A = a b cd e f

A = [ [a b c],[d e f],

� Mas como construir as matrizes?� Estaticamente

� M = [[1,2,3],[4,5,6],[7,8,9]]

� Matriz de tamanho m x n qualquer?

d e fg h i

[d e f],[g h i]]

Page 24: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Matrizes� Uma ideia seria:

� M = [[None]*n]*m

� Exercício: Tente criar uma matriz dessa forma e tente � Exercício: Tente criar uma matriz dessa forma e tente atribuir valor a um elemento dessa matriz.

Qual o problema?

Page 25: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Matrizes� L = [0]*3

� M = L*3 ≠ M = [L]*3

Forma para criar matrizes genéricas:� Forma para criar matrizes genéricas:

� M = []� for i in range(m):

� M.append([0]*n)

� Exercício:� Crie uma matriz 5x4 e atribua valor ao elemento a11.

Page 26: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Construções iterativas� Construção de listas de forma concisa

� [expressão iteração]

� Exemplo:� Exemplo:

>>> [i*2+3 for i in range(10)]

[3, 5, 7, 9, 11, 13, 15, 17, 19, 21]

Page 27: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Exercício� Construa, sem a ajuda do computador, as seguintes

listas:

1. [i*2+3 for i in range(10) if i%3==0]1. [i*2+3 for i in range(10) if i%3==0]2. [[int(i==j) for j in range(3)] for i in range(3)]

� v1 = [1,2,3]� v2 = [3,4,5]3. [v1[i]*v2[i] for i in range(len(v1))]4. [a*b for a in v1 for b in v2]

Page 28: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Exercício1. Suponha que você realizou um teste prático e o resultado

do seu teste está disposto da seguinte forma:L1 = [Valores testados]

L2 = [Resultado medido]L2 = [Resultado medido]

Cada valor testado gera um resultado medido com o mesmo índice em L2. Suponha que, agora, você precisa criar uma matriz, onde cada linha tem uma lista contendo dois elementos: Valor testado, resultado. Faça um programa que construa essa matriz, supondo que o número de valores testados é n.

Page 29: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide3.pdf · Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Cl ses. Listas Estrutura para armazenar

Exercício� Faça um programa que faça a multiplicação de

matrizes. As matrizes podem ter tamanhos arbitrários e serão digitadas no início do script.