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
Classes
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
Se tiver apenas um elemento, é
(10,) Tupla
preciso colocar uma vírgula após o
10, Tupla
elemento.
Função tuple
Transforma um elemento em uma tupla
>>>tuple (“abcd”)
(‘a’, ‘b’, ‘c’, ‘d’)
>>>tuple([1,2,3])
(1,2,3)
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
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
Mais detalhes sobre formatação em
%f float
http://docs.python.org/library/string.html
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
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’))
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”]
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
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)
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
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”]]
i=0
i=1
i=2
Nome
tel
Joao
Maria
Jose
5019
2030
1818
Adiciona elemento no fim da lista
Função de listas que diz o índice
dado o valor buscado
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”]
i=0
i=1
i=2
Nome
tel
Joao
Maria
Jose
5019
2030
1818
Exemplos
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
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'
Uso do for
Comando for pode ser usado para iterar sobre todas as
chaves de um dicionário
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]}
Classe dict
Dicionario.clear() Remove todos os elementos do
dicionário
Atenção:
Método clear
>>> x = { "Joao":"a", "Maria":"b" }
>>> y = x
>>> x.clear()
>>> print x,y
{} {}
Atribuição de dicionário vazio
>>> x = { "Joao":"a", "Maria":"b" }
>>> y = x
>>> x = {}
>>> print x,y
{} {'Joao': 'a', 'Maria': 'b'}
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}
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
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
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
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
Classe dict
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
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
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)