Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Linguagem de Programação I - Estruturas de Controle * Listas e Dicionários Algoritmos e Programação I - Cátia Khouri & Fábio Moura Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Listas * Algoritmos e Programação I – Listas e Dicionários * Listas são coleções de objetos que possuem as seguintes propriedades: Ordenação posicional, da esquerda para a direita; Acesso pelo deslocamento - indexação; Também suportam fracionamento e concatenação; Comprimento variável; São heterogêneas; Podem ser aninhadas arbitrariamente; São sequências mutáveis; Aceitam exclusão e atribuição de um elemento; Listas são arrays em C dentro do interpretador do Python. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações sobre listas1 1. LUTZ, M. & ASCHER, D. Aprendendo Python. Bookman, 2007. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações sobre listas1 1. LUTZ, M. & ASCHER, D. Aprendendo Python. Bookman, 2007. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações sobre listas1 1. LUTZ, M. & ASCHER, D. Aprendendo Python. Bookman, 2007. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações sobre listas >>> len([1, 2, 3]) 3 >>> [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>> [1, 2, 3] * 4 [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] >>> '[1, 2]' + "34" ‘[1, 2]34’ >>> [1, 2] + list ("34") [1, 2, '3', '4'] Obs.: o operador + espera operandos do mesmo tipo dos dois lados * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações sobre listas >>> for c in [1, 2, 3, 4]: print c, 1 2 3 4 >>> ‘b’ in [‘a’, ‘b’, ‘c’, ‘d’] True * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Indexação e Fracionamento Listas são sequências O resultado de uma indexação, depende do tipo do objeto que está no deslocamento; O resultado do fracionamento é sempre uma lista >>> L = ['Maria', 'Carlos', 'Ana'] >>> L[1] 'Carlos' >>> L[-2] 'Carlos' >>> L[1:] ['Carlos', 'Ana'] Mostra o item da Lista de índice 1 Mostra o item da Lista de índice -2 Mostra a lista a partir do item índice 1 0 1 2 -3 -2 -1 0 1 2 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Indexação e Fracionamento >>> L = [1, 2, 3, 4, 5] >>> L[1] 2 >>> L[-2] 4 >>> L[2:] [3, 4, 5] O resultado é um número O resultado é um número O resultado é uma lista * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Indexação/Fracionamento - Atribuição É possível alterar uma lista no local atribuindo valor a um elemento ou a um fracionamento: >>> L = ['Maria', 'Carlos', 'Ana'] >>> L[1] = ‘Pedro’ >>> L ['Maria', 'Pedro', 'Ana'] Fracionamento: >>> L[0:2] = ['casa', 'bola'] >>> L ['casa', 'bola', 'Ana'] Isso não é possível em strings Para alterar uma string é necessário criar outra * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Indexação e Fracionamento >>> L = L + ['livro'] >>> L ['casa', 'bola', 'Ana', 'livro'] >>> L[1:2] = ['cadeira'] >>> L ['casa', 'cadeira', 'Ana', 'livro'] >>> L[1:2] = ['mala', 'martelo'] >>> L ['casa', 'mala', 'martelo', 'Ana', 'livro'] L= ['casa', 'bola', 'Ana'] Acrescenta ‘livro’ no final da lista Substitui os ele- mentos de 1 a 2 (não incluso o 2) 0 1 2 3 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Alguns métodos de lista >>> L = L + ['livro'] >>> L ['casa', 'bola', 'Ana', 'livro'] >>> L.append('cadeira‘) >>> L ['casa', 'bola', 'Ana', 'livro', 'cadeira'] A diferença entre as duas formas é que append não precisa gerar outro objeto – altera o atual. A concatenação cria novo objeto Normalmente, é mais lenta L= ['casa', 'bola', 'Ana'] Acrescenta ‘livro’ no final da lista Acrescenta ‘cadeira’ no final da lista * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Alguns métodos de lista >>> del L[2] >>> L [‘casa’, ‘bola’, ‘livro’, ‘cadeira’] >>> L.sort() >>> L ['bola', 'cadeira', 'casa', 'livro'] >>> K = [5, 10, 15, 20] >>> K.extend([25, 30, 35]) >>> K [5, 10, 15, 20, 25, 30, 35] L= [‘casa’, ‘bola’, ‘Ana’, ‘livro’, ‘cadeira’] Elimina o elemento de índice 2 Ordena a lista Anexa vários ítens Cria uma lista 0 1 2 3 4 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Mais uma vez – exclusão >>> del L[2] >>> L [‘casa’, ‘bola’, ‘livro’, ‘cadeira’] Também é possível excluir seções de listas atribuindo uma lista vazia a um fracionamento ou índice. >>> L[1:]=[ ] >>> L ['casa'] >>> L[0] = [ ] >>> L [ [ ] ] L= [‘casa’, ‘bola’, ‘Ana’, ‘livro’, ‘cadeira’] Elimina o elemento de índice 2 0 1 2 3 4 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Dicionários Diferentes das listas, que são coleções ordenadas, os dicionários são coleções desordenadas de objetos; Por isso, seus elementos são buscados através de chaves e não por deslocamentos; >>> D = {'azul' : 1, 'verde' : 2, 'amarelo' : 3, 'vermelho' : 4} >>> D {'amarelo': 3, 'azul': 1, 'verde': 2, 'vermelho': 4} O uso de dicionários em Python facilita as tarefas de busca/pesquisa; À vezes são chamados de arrays associativos ou tabelas de hashing. * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Dicionários – Propriedades Seus elementos são acessados pela chave, e não pelo deslocamento; Existe um mapeamento das chaves nos valores; {'amarelo': 3, 'azul': 1, 'verde': 2, 'vermelho': 4} >>> D['azul'] 1 >>> D['amarelo'] 3 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Dicionários – Propriedades São coleções desordenadas de objetos arbitrários; As chaves fornecem uma localização simbólica – e não física – dos elementos; Operações que dependem de posição não fazem sentido: Fracionamento; Concatenação. Têm comprimento variável; Podem aumentar e diminuir no local (sem fazer cópia) São heterogêneos; Podem conter objetos de quaisquer tipos, inclusive dicionários (aninhamento); * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Dicionários – Propriedades Dicionários são tabelas de referências de objetos Armazenam referências de objetos e não cópias de objetos, propriamente; Da mesma forma, as listas são arrays de referências de objetos. * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações com dicionários1 1. LUTZ, M. & ASCHER, D. Aprendendo Python. Bookman, 2007. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Operações com dicionários1 1. LUTZ, M. & ASCHER, D. Aprendendo Python. Bookman, 2007. Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Criando um dicionário Vamos atribuir um dicionário a D1: >>> D1 = {'queijo':1, 'presunto':2, 'frango':3} >>> D1 {'frango': 3, 'queijo': 1, 'presunto': 2} Observe que a ordem das chaves mudou Isso acontece de propósito – para implementar uma busca rápida as chaves precisam tornar-se aleatórias na memória Indexação pela chave - o valor da chave ‘frango’ é 3 >>> D1[‘frango'] 3 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Comprimento e lista de chaves A função interna len retorna o comprimento da lista de chaves, isto é, a quantidade de valores >>> len(D1) 3 O método keys() retorna a lista de chaves existentes: >>> D1.keys() ['frango', 'queijo', 'presunto'] * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Verificação de existência de chave O método has_key() informa se uma determinada chave existe no dicionário: >>> D1.has_key('presunto') True Teste de participação como membro – outra alternativa >>> 'queijo' in D1 True * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Alteração, inclusão e exclusão de entrada >>> D1['queijo']=['minas', 'prato', 'coalho'] >>> D1 {'frango': 3, 'queijo': ['minas', 'prato', 'coalho'], 'presunto': 2} O valor correspondente à chave queijo foi alterado >>> D1['queijo'] ['minas', 'prato', 'coalho'] Exclusão de entrada >>> del D1['presunto'] >>> D1 {'frango': 3, 'queijo': ['minas', 'prato', 'coalho']} * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Alteração, inclusão e exclusão de entrada Ao atribuir um valor a uma nova chave (que ainda não foi utilizada), esta é criada. >>> D1['atum']=4 >>> D1 {'frango': 3, 'queijo': ['minas', 'prato', 'coalho'], 'atum': 4} Atenção: isto não pode ser feito em listas Para expandir uma lista é necessário usar append() – expande no local, sem precisar fazer cópia; ou Concatenação – cria uma nova lista * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Buscando chaves O método get() retorna valores de chaves existentes Caso a chave não existe, get() retorna “None” ou um valor padrão definido pelo usuário: >>> D1.get('frango'), D1.get('torrada') (3, None) >>> D1.get('torrada', 'inexistente') ('inexistente') * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Criando uma tabela O exemplo a seguir cria uma tabela que mapeia números de matrícula a nomes >>> tabela = {16542008: 'Ana Maria', 75632008: 'Jose Marcos', 53462007: 'Maria do Carmo'} >>> tabela {16542008: 'Ana Maria', 75632008: 'Jose Marcos', 53462007: 'Maria do Carmo'} >>> tabela[75632008] 'Jose Marcos' * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Imprimindo a tabela com for >>> for c in tabela.keys(): print c, '\t', tabela[c] 16542008 Ana Maria 75632008 Jose Marcos 53462007 Maria do Carmo * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Laços for O laço for é um iterador genérico no Python; Ele pode percorrer os itens de qualquer objeto sequência ordenada ou dicionário; strings, listas, tuplas e objetos criados pelo usuário. Sintaxe: for <destino> in <objeto>: <instruções> else: <instruções> Os itens do objeto sequência são atribuídos ao destino um por um e executa o miolo do laço para cada um. * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Exemplo Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Exemplo Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Exercícios Escreva um programa em Python para ler uma lista com 15 posições, calcular e mostrar: • O maior elemento da lista e em que posição esse elemento está; • O menor elemento da lista e em que posição esse elemento está. Obs.: Os valores lidos devem ser armazenados em uma lista * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Exercícios (cont.) Pedir uma nota ao usuário; a nota deve estar necessariamente entre 0.0 e 10.0, caso contrário deverá ser emitida uma mensagem de erro e solicitada uma nova nota; imprimir “Aprovado” para nota maior ou igual a 7.0 e “Reprovado” para nota menor que 7.0 Modifique o programa anterior, de forma que seja impresso o conceito do aluno de acordo com os seguintes critérios: nota [9, 10] = “A” nota [8, 9[ = “B” nota [7, 8[ = “C” nota [5, 7[ = “D” nota [0, 5[ = “E” Solicitar o salário base e o número de horas trabalhadas pelo funcionário; se o número de horas for menor ou igual a 40, o salário deverá ser igual ao salário base; caso contrário, o salário deverá ser igual ao salário base mais o número de horas extras vezes o valor da hora trabalhada com acréscimo de 25%; mostrar o valor final do salário * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * Linguagem de Programação I - Estruturas de Controle * Exercícios (cont.) Modificar o programa anterior para pedir o salário base da empresa e o número de horas trabalhadas por cada um de seus 10 funcionários; no final mostrar o valor total da folha de pagamento da empresa Imprimir os números primos menores que 1000 * Algoritmos e Programação I – Listas e Dicionários * Linguagem de Programação I - Estruturas de Controle * * * * *
Compartilhar