Buscar

09_-_Tipos_Incorporados-Listas_e_Dicionarios

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
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais