Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012 Relembrando... Tipos primitivos Simples (int, long, float, complex, string) Compostos Listas Dicionários Tuplas Conjuntos Definidos pelo usuário Classes Listas Estrutura para armazenar uma sequência de elementos Em Python: Usadas para representar sequências 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. Listas Lista vazia A= [] Lista com inteiros A = [1,2,3] Lista com elementos genéricos (inclusive outras listas) A = [1, 'a', 2+3j, ['ab', 'CD']] Acesso aos elementos da lista 1º elemento: 0 Último elemento: -1 Lista = [1,2,3,4] 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 Existem funções específicas para inserir novas posições na lista Inserindo elementos em listas Concatenação e repetição L1 = [‘a’, ‘b’] L2 = [1,2] L1+L2 = [‘a’, ‘b’, 1, 2] 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] Operações em listas Deletar um elemento Exercício Na lista a seguir: L = [1,2,3,[‘a’, ‘b’, ‘c’],4, [5,6]] 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] 1. Fatiamento Obter ou atribuir um valor a uma parte de uma lista Fatiamento Fatiamento com espaçamento Valor do espaçamento definido após o intervalo 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 lista 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 Resposta: True ou False Verificação de presença Operador in Verifica se um elemento pertence a uma lista ou a uma string Funções úteis len(lista) Retorna o número de elementos na lista min(lista) Retorna o menor valor da lista max(lista) Retorna o maior valor da lista list(string) Transforma a string em uma lista 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 Comando for Permite iterar sobre os elementos de uma lista Formato: for variavel in lista: açõ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 Comando for 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 Classe list As listas criadas anteriormente são objetos da classe list Métodos da classe list Usados como objeto.método() 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 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 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 Matrizes A= abc def ghi A = [ [a b c], [d e f], [g h i]] Mas como construir as matrizes? Estaticamente M = [[1,2,3],[4,5,6],[7,8,9]] Matriz de tamanho m x n qualquer? Matrizes Uma ideia seria: M = [[None]*n]*m Exercício: Tente criar uma matriz dessa forma e tente atribuir valor a um elemento dessa matriz. Qual o problema? Matrizes L = [0]*3 M = L*3 ≠ M = [L]*3 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. Construções iterativas Construção de listas de forma concisa [expressão iteração] Exemplo: >>> [i*2+3 for i in range(10)] [3, 5, 7, 9, 11, 13, 15, 17, 19, 21] Exercício Construa, sem a ajuda do computador, as seguintes listas: 1. 2. [i*2+3 for i in range(10) if i%3==0] [[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] Exercício 1. 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] 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. 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.