programação avançada tuplas, strings e dicionários

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

Upload: cooper-davidson

Post on 01-Jan-2016

35 views

Category:

Documents


1 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

Programação AvançadaTuplas, strings e dicionários

Prof. Natalia Castro FernandesMestrado em Telecomunicações – UFF

2º semestre/2012

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

Relembrando...Tipos primitivos

Simples (int, long, float, complex, string) Compostos

Listas Tuplas Dicionários Conjuntos

Definidos pelo usuárioClasses

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

TuplasSequências imutáveis de elementosFuncionalidades 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,) Tupla10, Tupla

Se tiver apenas um elemento, é preciso colocar uma vírgula

após o elemento.

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

Função tupleTransforma um elemento em uma tupla

>>>tuple (“abcd”)(‘a’, ‘b’, ‘c’, ‘d’)>>>tuple([1,2,3])(1,2,3)

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

Utilização das tuplasEstruturas que demandam valores imutáveis

Chaves de dicionáriosFunções com números variáveis de argumentosFormatação de texto

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

Formatação de textoFormataçã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

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

Módulo stringAuxilia a manipulação de stringsPrincipais 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’))

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

Módulo stringString.replace(velho, novo) Substitui todas

as instâncias de velho por novo em StringString.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”]

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

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:~$ ifconfigeth0 Link encap:Ethernet HWaddr 14:da:e9:98:4f:1a inet addr: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 inet addr: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)

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

DicionáriosEstruturas semelhantes às listas, mas que:

Não tem ordemO í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 alteradoA chave não pode ser alteradaEx: dicionario[chave]=“Novo valor”

Novos valores podem ser acrescentados pela adição de uma chave ainda não definida

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

Listas x DicionáriosEx: 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”]]

Função de listas que diz o índice dado o valor buscado

Nome tel

Joao 5019Maria 2030Jose 1818

i=0i=1i=2

Adiciona elemento no fim da lista

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

Listas x DicionáriosEx: 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 5019Maria 2030Jose 1818

i=0i=1i=2

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

Exemplos

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

Função dictUsada 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

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

Formatação de stringsPara 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'

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

Uso do forComando for pode ser usado para iterar

sobre todas as chaves de um dicionário

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

Classe dictPrincipais 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]}

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

Classe dictDicionario.clear() Remove todos os elementos

do dicionário Atenção:

>>> 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'}

Método clear Atribuição de dicionário vazio

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

Classe dictfromkeys(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}

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

Classe dictget(chave,valor)

Obtém o conteúdo de chaveNão causa erro caso chave não exista: retorna

valorSe valor não for especificado, chaves

inexistentes retornam None

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

Classe dictDicionario.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

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

Classe dictDicionario.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

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

Classe dictDicionario.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

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

Classe dict

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

Funções embutidaslen(dicionario) Retorna o tamanho do

dicionáriokey in dicionario Retorna True se a key

pertence ao dicionáriokey not in dicionario Retorna True se a key

não pertence ao dicionário

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

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:~$ ifconfigeth0 Link encap:Ethernet HWaddr 14:da:e9:98:4f:1a inet addr: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 inet addr: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)