Download - Python - Estruturas de dados
por Fábio Cerqueira
Listas
Uma lista é uma forma de organização através da enumeração de dados para melhor visualização da informação. Uma lista tem teoricamente tamanho infinito.
• Uma list em python é diferente das tradicionais listas. São listas mais generalizadas.
• Uma list é uma sequência, assim como as strings.
• Listas em Python podem conter elementos de tipos diferentes.
• Em python a representação de lista é feita por [ ]
• Listas são sequências mutáveis.
Criando uma list
As listas podem ser criadas de duas formas.
Criação de duas listas vazias.
Assim como para strings, o comando len() retorna o tamanho da list.
Criando list com conteúdo
As listas podem ser criadas definindo direto o seu conteúdo.
Note que cada nome na lista sócios é um elemento. Formando uma lista de strings
Listas com tipos variáveis
Os elementos da lista não precisam ser do mesmo tipo.
1. A list curso possui dois elementos, uma str e um list.
2. A list alunos possui 3 elementos, todas list
• Note que o elemento 2 da lista curso é outra list que possui 4 elementos de tipo variados entre str, float e int
• Note também no 2º elemento do 3º elemento da lista alunos
a palavra None. Ela representa vazio no Python.
Acesso aos valoresOs slices usados em string também funcionam aqui.
Note o uso de atribuição múltipla.
De strings para listas
Dica do uso do construtor para converter de string para lista
Cada caractere da string agora será um elemento da list. Dando assim uma dinâmica maior para a string.
Listas podem ser mudadas
Os elementos das listas podem ser modificados.
Diferente das sequências fixas, como string, os elementos das lists podem ser alterados
Removendo elemento
Para remove um elemento da lista usa-se o comando del() ou o método remove().
Exemplo de remoção
Este exemplo remove todos o elementos ‘a’ da list.
O método count que foi usado no exemplo acima retorna quantas vezes o elemento passado como parâmetro ocorre na list.
Remoção estilo pilha
Uma pilha(LIFO - Last in firt out) é uma estrutura de dados que onde o último elemento a ser adiciona é o primeiro a ser removido.
O método pop() remove e retorna o valor do último elemento da lista.
Pode ser usado com parâmetro, removendo e retornando o valor do index passado. Ex: lista.pop(3)
Inserção em listas
Até agora vimos somente opções de listas que já nascem prontos e são atualizadas e reduzidas. A inserção em listas pode ser feita de várias formas.
A inserção ainda pode ser feita com uso de operadores.
Operadores para lista
Identidade Mesmo as listas sendo iguais elas possuem identidades diferentes.
O operador is faz a verificação se dois objetos possuem a mesma identidade.
ReferênciaAs listas são passadas por referência.
Quando foi modificado o valor de b[1] também foi modificado o valor de a[1] por ambos tem o mesmo valor de referência.
Comandos
Comandos com min(),max(),len() são aplicáveis a sequências, valendo
também para listas.
Pesquise sobre outros comandos que podem ser usados.
Métodos para list
As listas possuem nove métodos definidos, dos quais já foram citados: append,count,extend,insert,pop,remove.
Compressões de listasAs listas podem ser filtradas através de compressões.
Sintaxe:
[expDeMapeamento for elemento in listaOrigem if expDeFiltragem]
A compressão de lista é usada quando deseja filtrar dados de uma lista avaliados pela condição expDeFiltragem. Exemplos:
Tuplas
• As tuplas assim como as listas são sequências, no entanto não são mutáveis
• Podem conter elementos de diferentes tipos dentro dela.
• É possível realizar slices assim como nas strings e listas. Gerando uma nova tupla.
• As tuplas são representados por ()
• As tuplas não possuem métodos.
• Não é possível adicionar, remover ou atualizar elementos de uma tupla
E porque usar tuplas?
• São mais rápidas que as listas
• São usadas na formatação das strings
• Para “listas” de elementos constantes é a melhor opção
• São usadas com parâmetros de funções de parâmetros variáveis.
• É uma sequência de tipos variados que pode ser usados como chave de dicionário.
Criando uma tupla
Assim como as listas, temos mais de uma opção para criação de tupla.
Criação de tupla com um elemento.
Criando uma tupla
Assim como as listas, temos mais de uma opção para criação de tupla.
Criação de tupla com um elemento.
Operadores com tupla
Você não pode modificar uma tupla, mas pode trocá-la por outra.
Note que ao “mudar” o conteúdo da tuple vogais, mudamos seu id também
Funções retornando tuplas
Tuplas podem servir de retorno em funções. Um exemplo disso é o comando divmod() que retorna o valor do quociente e do resto em uma tupla.
Dicionários
Dicionários são estruturas parecidas com o que temos de dicionário no mundo real. Exemplo:
2. Um dicionário português para inglês.
4. Uma legenda de mapa
• Os dicionários são representados em python por {}
• Os dicionários são multáveis
• Não suporta chaves repetidas
• São divididos em chave e valor
• Não existe o conceito de ordenação de um dicionário
Criando dicionários
A criação de um dicionário pode ser feita de mais de uma forma.
Note o uso das {} para definir o dicionário e que os itens são separados por ‘,’ uns dos outros, mas a chave do seu valor é separada por :
Acessando o valor
Exemplo de como acessar os valores de um dicionário:
Observe que o acesso agora é feito através da chave, representado no dicionário legenda por: ‘+’,’-’,’*’,’/’
Diferente de como era feito o acesso em strings, tuplas e listas.
Modificando um valor
Dicionários possuem valores quem podem ser alterados através do acesso pelas suas respectivas chaves:
A modificação da ‘Soma’ para ‘Adição’ foi feita através da chave o símbolo ‘+’
Removendo valores
Removendo por chave com o comando del:
Removendo com os métodos pop() e popitem():
As chavesOs dicionários oferecem alguns métodos para trabalhar com chaves.
Os valoresAssim como para chaves os dicionários também têm métodos para
trabalhar com valores.
Adicionando mais itensPara adicionar mais elementos em um dicionário usando o método
update()
O método update recebe como parâmetro um dicionário e faz a atualização caso já exista a chave, se n existe ele faz a adição do novo item.
Métodos úteisOs métodos get() e setdefault()
Outros métodos úteis podem ser o clear(),copy(),items() e iteritems() Ver próximo slide.
Dict e stringsO dicionários assim com as tuplas podem ser usados em strings
formatadas, só que agora de forma nomeada.
Exemplo prático para arquivos html.
ConjuntosConjuntos são tipos de dados poucos usados em Python que representam
conjuntos que não possuem itens repetidos.
• Existem dois tipos:
• set() - mutável com as listas
• frozenset() – fixo com as tuplas
Operações e métodos Os conjuntos possuem métodos e operações semelhas as usadas da
matemática.
Note que a ordem que é
usada a diferença interfere
no resultado.
Operações e métodos Verificação de subconjuntos
Mais sobre conjunto.
Para maiores informações sobre conjuntos visite a documentação do python em:
http://docs.python.org/lib/types-set.html
Funções
Sintaxe básica:
def nome(parametros):<bloco de comandos>
Funções
Os exemplos de funçõesao lado apresentam algumascaracterísticas distintas.menu() – é um procedimento que exibe um texto na tela
triplo(x) – retorna o valor dotriplo de um número
curso(nome = “Python”) – exibeuma frase na tela, mas com o detalhe do parâmetro de valorpadrão
Funções são objetosAssim como tudo em python, as funções também são objetos.
Veja que recriamos a função divmod que retorna uma tupla (quoc,resto). E logo a seguir fizemos um alias para ela, fazendo d = divmodF
A ordem não importa
A ordem como são chamados os parâmetros não importa, desde que sejam chamados de forma nomeada
Note que o resultado é igual, mesmo chamando os parâmetros em ordem trocada. É possível por causa da chamada com parâmetros nomeados.
Parâmetros Especiais IExistem outros tipos de passagem de parâmetro. Um deles é passando
uma tupla como argumento.
Parâmetros Especiais IIO segundo tipo de passagem de parâmetro especial é usando dicionários.
Funções dentro de funçõesVocê pode criar funções dentro de outras funções
O conceito de função dentro de funções
Reforça que cada função é um objeto.
Para mais informações e conhecer a aplicação para isso busca no google por python decorators