26
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações –UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Prof. Natalia Castro Fernandes

Mestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Relembrando...� Tipos primitivos

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

� Compostos

� Listas� Listas

� Tuplas

� Dicionários

� Conjuntos

� Definidos pelo usuário

� Classes

Page 3: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Tuplas� Sequências imutáveis de elementos

� Funcionalidades semelhantes às listas

� Definição de uma tupla>>>T = (1,2,3)>>>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.

Page 4: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Função tuple� Transforma um elemento em uma tupla

>>>tuple (“abcd”)

(‘a’, ‘b’, ‘c’, ‘d’)

>>>tuple([1,2,3])>>>tuple([1,2,3])

(1,2,3)

Page 5: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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

Page 6: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Formatação de texto� Formatação

� Usado para criar strings misturando texto e valores de variáveis

� Formato� String_template % valor� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 stringapariçã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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 separadorpartes 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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.0inet6 addr: fe80::16da:e9ff:fe98:4f1a/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:322333 errors:0 dropped:0 overruns:0 frame:0RX packets:322333 errors:0 dropped:0 overruns:0 frame:0TX packets:12809 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:37321973 (37.3 MB) TX bytes:1750252 (1.7 MB)Interrupt:41 Base address:0xa000

lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:1034 errors:0 dropped:0 overruns:0 frame:0TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:151975 (151.9 KB) TX bytes:151975 (151.9 KB)

Page 10: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Dicionários� Estruturas semelhantes às listas, mas que:

� Não tem ordem� O índice (ou chave) pode ser de qualquer tipo imutável

� Formato� 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

Page 11: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 tel� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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”: Nome tel� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Exemplos

Page 14: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Função dict� Usada para criar dicionários

� Argumentos

� Lista de tuplas (chave, conteúdo)

� Ou sequência de itens no formato chave=valor� Ou sequência de itens no formato chave=valor

� Nesse caso, as chaves TEM que ser strings sem aspas

Page 15: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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" }>>> dic = { "Joao":"a", "Maria":"b" }

>>> s = "%(Joao)s e %(Maria)s“

>>> s % dic

'a e b'

Page 16: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Uso do for� Comando for pode ser usado para iterar sobre todas as

chaves de um dicionário

Page 17: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Classe dict� Dicionario.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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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])� >>> {}.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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 Noneretornam None

Page 21: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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árioDicionario.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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 � Dicionario.popitem() � Retorna e remove um par chave/valor aleatório do dicionário

Page 23: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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

Page 24: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

Classe dict

Page 25: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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 � key not in dicionario � Retorna True se a key não pertence ao dicionário

Page 26: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide4.pdf · Listas Tuplas Dicionários Conjuntos Definidos pelo usuário Cl ses. Tuplas Sequênci imutáveis de elementos

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.0inet6 addr: fe80::16da:e9ff:fe98:4f1a/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:322333 errors:0 dropped:0 overruns:0 frame:0TX packets:12809 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:37321973 (37.3 MB) TX bytes:1750252 (1.7 MB)Interrupt:41 Base address:0xa000

lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:1034 errors:0 dropped:0 overruns:0 frame:0TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:151975 (151.9 KB) TX bytes:151975 (151.9 KB)