1 / 26

Programação Avançada Tuplas, strings e dicionários

Programação Avançada Tuplas, strings e dicionários. Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012. Relembrando. Tipos primitivos Simples (int, long, float, complex, string) Compostos Listas Tuplas Dicionários Conjuntos Definidos pelo usuário

Download Presentation

Programação Avançada Tuplas, strings e dicionários

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação AvançadaTuplas, strings e dicionários Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012

  2. Relembrando... • Tipos primitivos • Simples (int, long, float, complex, string) • Compostos • Listas • Tuplas • Dicionários • Conjuntos • Definidos pelo usuário • Classes

  3. Tuplas • Sequências imutáveis de elementos • Funcionalidades semelhantes às listas • Definição de uma tupla >>>T = (1,2,3) >>>T[0] 1 • Tupla vazia  () • Parênteses são opcionais, se não provocar ambiguidade • (10)  inteiro • (10,)  Tupla • 10,  Tupla Se tiver apenas um elemento, é preciso colocar uma vírgula após o elemento.

  4. Função tuple • Transforma um elemento em uma tupla >>>tuple (“abcd”) (‘a’, ‘b’, ‘c’, ‘d’) >>>tuple([1,2,3]) (1,2,3)

  5. Utilização das tuplas • Estruturas que demandam valores imutáveis • Chaves de dicionários • Funções com números variáveis de argumentos • Formatação de texto

  6. Formatação de texto • Formatação • Usado para criar strings misturando texto e valores de variáveis • Formato • String_template % valor • String_template contém texto e indicadores de variáveis • %s string • %d decimal • %f  float • etc. • Exemplo • “Decimal %d” % 10  Decimal 10 • “Decimal %d float %f” % (10,10)  Decimal 10 float 10.0000 • “%s tirou nota %d” % (‘João’, 10)  João tirou nota 10 Mais detalhes sobre formatação em http://docs.python.org/library/string.html

  7. Módulo string • Auxilia a manipulação de strings • Principais funções da classe string • String.find(substring)  Retorna o índice da primeira aparição de substring em string • String.join(sequência_de_strings)  Retorna uma sequência de strings em uma string, utilizando como separador o valor de String • Ex: “/”.join((‘1’, ‘2’, ‘3’))

  8. Módulo string • String.replace(velho, novo)  Substitui todas as instâncias de velho por novo em String • String.split(separador)  Retorna uma lista com as partes de String separadas de acordo com separador • Ex: >>>a = “Frase de teste para entender o split” >>>a.split(‘ ‘) [“Frase”, “de”, “teste”, “para”, “entender”, “o”, “split”]

  9. Exercício • Imagine que você está fazendo um teste que observe o que está acontecendo na rede através do comando ifconfig. O resultado do ifconfig é armazenado em uma string, mas você precisa apenas no número de pacotes que entraram e saíram da placa de rede. Faça uma programa que extraia esses dados do resultado de ifconfig e os guarde em uma lista [recebido, enviado]. Obs.: A saída do ifconfig é da seguinte forma: natalia@Natalia-UFF:~$ ifconfig eth0 Link encap:Ethernet HWaddr 14:da:e9:98:4f:1a inetaddr:200.20.11.31 Bcast:200.20.11.255 Mask:255.255.255.0 inet6 addr: fe80::16da:e9ff:fe98:4f1a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:322333 errors:0 dropped:0 overruns:0 frame:0 TX packets:12809 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:37321973 (37.3 MB) TX bytes:1750252 (1.7 MB) Interrupt:41 Base address:0xa000 lo Link encap:Local Loopback inetaddr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1034 errors:0 dropped:0 overruns:0 frame:0 TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:151975 (151.9 KB) TX bytes:151975 (151.9 KB)

  10. Dicionários • Estruturas semelhantes às listas, mas que: • Não tem ordem • O índice (ou chave) pode ser de qualquer tipo imutável • Formato • { chave1:conteúdo1, ... chaveN:conteúdoN} • O conteúdo associado a uma chave pode ser alterado • A chave não pode ser alterada • Ex: dicionario[chave]=“Novo valor” • Novos valores podem ser acrescentados pela adição de uma chave ainda não definida

  11. Listas x Dicionários • Ex: Criando uma agenda com listas • Criar duas listas, nome e telefone, que armazenam o nome e o telefone no mesmo índice • Para acrescentar “Joao” com telefone “5019”: • nome+= “Joao” • telefone+=“5019” • Para encontrar o telefone de “Joao”: • Tel = telefone[nome.index[“Joao”]] Nome tel Joao 5019 Maria 2030 Jose 1818 i=0 i=1 i=2 Adiciona elemento no fim da lista Função de listas que diz o índice dado o valor buscado

  12. Listas x Dicionários • Ex: Criando uma agenda com dicionários • Criar um dicionário cuja chave é o nome e o conteúdo é o telefone • Para acrescentar “Joao” com telefone “5019”: • telefone[“Joao”] = “5019” • Para encontrar o telefone de “Joao”: • Tel = telefone[“Joao”] Nome tel Joao 5019 Maria 2030 Jose 1818 i=0 i=1 i=2

  13. Exemplos

  14. Função dict • Usada para criar dicionários • Argumentos • Lista de tuplas (chave, conteúdo) • Ou sequência de itens no formato chave=valor • Nesse caso, as chaves TEM que ser strings sem aspas

  15. Formatação de strings • Para usar dicionários para formatar strings, usar a chave do dicionário entre parênteses, após o % >>> dic = { "Joao":"a", "Maria":"b" } >>> s = "%(Joao)s e %(Maria)s“ >>> s % dic 'a e b'

  16. Uso do for • Comando for pode ser usado para iterar sobre todas as chaves de um dicionário

  17. Classe dict • Principais métodos • A=Dicionario.copy()  Gera um novo dicionário com os mesmos pares chave:conteúdo • Atenção: O conteúdo não é copiado, mas sim referenciado >>> x = {"Joao":[1,2], "Maria":[3,4]} >>> y = x.copy() >>> y ["Pedro"]=[5,6] >>> x ["Joao"] += [3] >>> print x {'Joao': [1, 2, 3], 'Maria': [3, 4]} >>> print y {'Pedro': [5, 6], 'Joao': [1, 2, 3], 'Maria': [3, 4]}

  18. Classe dict • Dicionario.clear()  Remove todos os elementos do dicionário • Atenção: Método clear Atribuição de dicionário vazio >>> x = { "Joao":"a", "Maria":"b" } >>> y = x >>> x.clear() >>> print x,y {} {} >>> x = { "Joao":"a", "Maria":"b" } >>> y = x >>> x = {} >>> print x,y {} {'Joao': 'a', 'Maria': 'b'}

  19. Classe dict • fromkeys(lista,valor) Retorna um novo dicionário com as chaves em listas associadas à valor • Valor vale, por default, None • Exemplos • >>> {}.fromkeys([2,3]) • {2: None, 3: None} • >>> dict.fromkeys(["Joao","Maria"],0) • {'Joao': 0, 'Maria': 0} • >>>dict.fromkeys([(["Joao","Maria"]) • {'Joao': None, 'Maria': None}

  20. Classe dict • get(chave,valor) • Obtém o conteúdo de chave • Não causa erro caso chave não exista: retorna valor • Se valor não for especificado, chaves inexistentes retornam None

  21. Classe dict • Dicionario.has_key(chave)  Retorna True se a chave existe no Dicionário e False, caso não exista • Dicionario.items()  Retorna uma lista com todos os pares chave/conteúdo do dicionário • Dicionario.keys()  Retorna uma lista com todas as chaves do dicionário • Dicionario.values()  Retorna uma lista com todos os valores do dicionário

  22. Classe dict • Dicionario.pop(chave)Retorna o valor de chave e remove o par chave/valor do dicionário • Dicionario.popitem()  Retorna e remove um par chave/valor aleatório do dicionário

  23. Classe dict • Dicionario.update(Dicionario2)  Atualiza Dicionário com as chaves de Dicionario2 • Atenção: Apresenta as mesmas questões da cópia de conteúdo que o update

  24. Classe dict

  25. Funções embutidas • len(dicionario)  Retorna o tamanho do dicionário • key in dicionario  Retorna True se a key pertence ao dicionário • key not in dicionario  Retorna True se a key não pertence ao dicionário

  26. Exercício • Imagine que você está fazendo um teste que observe o que está acontecendo na rede através do comando ifconfig. O resultado do ifconfig é armazenado em uma string, mas você precisa apenas no número de pacotes que entraram e saíram da placa de rede. Faça uma programa que extraia esses dados do resultado de ifconfig e os guarde em uma lista [recebido, enviado]. Essa lista deve ser inserida em um dicionario cuja chave é o nome da interface. Obs.: A saída do ifconfig é da seguinte forma: natalia@Natalia-UFF:~$ ifconfig eth0 Link encap:Ethernet HWaddr 14:da:e9:98:4f:1a inetaddr:200.20.11.31 Bcast:200.20.11.255 Mask:255.255.255.0 inet6 addr: fe80::16da:e9ff:fe98:4f1a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:322333 errors:0 dropped:0 overruns:0 frame:0 TX packets:12809 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:37321973 (37.3 MB) TX bytes:1750252 (1.7 MB) Interrupt:41 Base address:0xa000 lo Link encap:Local Loopback inetaddr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1034 errors:0 dropped:0 overruns:0 frame:0 TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:151975 (151.9 KB) TX bytes:151975 (151.9 KB)

More Related