Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Aula 20 Aula 20 Aula 20 Aula 20 –––– Estrutura de DadosEstrutura de DadosEstrutura de DadosEstrutura de Dados Tuplas e StringsTuplas e StringsTuplas e StringsTuplas e Strings TuplasTuplasTuplasTuplas - São estruturas de dados parecidas com listas, mas com a particularidade de serem imutáveisimutáveisimutáveisimutáveis. ---- TuplasTuplasTuplasTuplas são sequências e podem ser indexadas, mas não é possível modificálas. - Um valor do tipo tuplatuplatuplatupla é uma série de valores separados por vírgulas e entre parênteses. >>> x = (1,2,3) ou x = 1,2,3 >>> x [0] >>> x 1 (1, 2, 3) >>> x [2]=1 Traceback (most recent call last): File "<pyshell#97>", line 1, in <module> x[2]=1 TypeError: 'tuple' object does not support item assignment TuplasTuplasTuplasTuplas -Uma tuplatuplatuplatupla vazia se escreve () - Os parênteses são opcionais se não provocarem ambiguidade - Uma tuplatuplatuplatupla contendo apenas um elemento deve ser escrita com uma vírgula ao final - Um valor entre parênteses sem vírgula no final é meramente uma expressão >>> (10) >>> 3*(10+3) 10 39 >>> 10, >>> 3*(10+3,) (10,) (13, 13, 13) >>> (10,) (10,) 4 TuplasTuplasTuplasTuplas QuandoQuandoQuandoQuando usarusarusarusar tuplastuplastuplastuplas???? Algumas construções em Python requerem tuplas ou sequências imutáveis, por exemplo: - Tuplas podem ser usadas como chaves de dicionários; - Funções com número variável de argumentos acessam os argumentos por meio de tuplas; - O operador de formatação aceita tuplas, mas não listas. >>>>>>>>>>>> templatetemplatetemplatetemplate ==== """"%%%%ssss temtemtemtem %%%%dddd anos"anos"anos"anos" >>>>>>>>>>>> tuplatuplatuplatupla ==== ('Pedro',('Pedro',('Pedro',('Pedro', 10101010)))) >>>>>>>>>>>> templatetemplatetemplatetemplate %%%% tuplatuplatuplatupla 'Pedro'Pedro'Pedro'Pedro temtemtemtem 10101010 anos'anos'anos'anos' 5 StringsStringsStringsStrings 6 Strings Strings Strings Strings ---- ÍndicesÍndicesÍndicesÍndices Endereçam caracteres individuais de uma string. Notação: string[indice] Exemplo: var = “Pedro dos Santos” var[2] : ‘d' var[9] : ' ' var[15] : ‘s' var[-1] : ‘s' Comando len(...): fornece o tamanho da stringComando len(...): fornece o tamanho da stringComando len(...): fornece o tamanho da stringComando len(...): fornece o tamanho da string len(var) = 16len(var) = 16len(var) = 16len(var) = 16 Índice 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Var P e d r o d o s S a n t o s 2 7 Strings Strings Strings Strings ---- SlicesSlicesSlicesSlices Separa trechos de uma stringSepara trechos de uma stringSepara trechos de uma stringSepara trechos de uma string Notação:Notação:Notação:Notação: string[índice1:índice2] Retorna os caracteres desde o de índice1 até o de (índice2 – 1) Se índice1 é omitido, é assumido 0 Se índice2 é omitido, é assumido o fim da string 8 Strings Strings Strings Strings ---- SlicesSlicesSlicesSlices ExemploExemploExemploExemplo >>> x = 'abcde' >>> x[0:2] >>> x [2:] >>> x[:] >>> x[-1:] >>> x[:-1] 9 Strings Strings Strings Strings ---- SlicesSlicesSlicesSlices ExemploExemploExemploExemplo >>> x = 'abcde' >>> x[0:2] 'ab' >>> x [2:] 'cde' >>> x[:] 'abcde' >>> x[-1:] 'e' >>> x[:-1] 'abcd' 10 Strings Strings Strings Strings ---- SlicesSlicesSlicesSlices ExercícioExercícioExercícioExercício Faça uma função que leia uma string e verifique se é um palíndromo, isto é, da esquerda para direita ou da direita para a esquerda têm-se a mesma sequência de caracteres. Exemplos: ama, ovo, asa, erre, arara. 11 Strings Strings Strings Strings ---- SlicesSlicesSlicesSlices ExercícioExercícioExercícioExercício Faça uma função que leia uma string e verifique se é um palíndromo, isto é, da esquerda para direita ou da direita para a esquerda têm-se a mesma sequência de caracteres. def palindromo(palavra): if palavra == palavra[-1::-1]: return True else: return False 12 Módulo Módulo Módulo Módulo StringStringStringString ---- FunçõesFunçõesFunçõesFunções chr(num): Retorna o caracter correspondente ao número passado. ord(caracter): Retorna o código do caracter que foi passado. Exemplo >>> chr(97) 'a' >>> ord('a') 97 3 13 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos lower(): retorna a string com todos os caracteres maiúsculos convertidos para minúsculos. upper(): retorna a string com todos os caracteres minúsculos convertidos para maiúsculos. Exemplo >>> print "Esperança".upper() ESPERANÇA >>> print "Pé de Laranja Lima".lower() pé de laranja lima 14 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos find(substring,inicio,fim): Retorna o índice da primeira ocorrência de substring. - inicio e fim são opcionais e indicam os intervalos de índices onde a busca será efetuada. - Os defaults são, respectivamente, 0 e comprimento da string. - Caso substring não apareça na string, é retornado -1. - Note que o operador in pode ser usado para dizer se uma substring aparece numa string. Exemplo >>> s = "quem parte e reparte, fica com a maior parte" >>> s.find("parte") 5 >>> s.find("reparte") 13 >>> s.find("parcela") -1 >>> "parte" in s True >>> s.find("parte",6) 15 >>> s.find("parte",6,12) -1 15 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos partition(sep): divide uma string em 3 partes : o que vem antes de sep, sep e o que vem após sep. Caso sep não seja encontrado, a string é retornada seguida por duas strings vazias. Exemplo >>> s = "quem parte e reparte, fica com a maior parte" >>> s.partition("t") ('quem par', 't', 'e e reparte, fica com a maior parte') >>>s.partition("z") ('quem parte e reparte, fica com a maior parte', '', '') 16 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos split(separador): retorna uma lista com as substrings presentes entre cópias da string separador. Faz o contrário do método join. Se separador não for especificado, é assumido sequências de caracteres em branco, tabs ou newlines. Exemplo >>> s = "xxx yyy zzz xxx yyy zzz" >>> s.split() ['xxx', 'yyy', 'zzz', 'xxx', 'yyy', 'zzz'] >>> s.split('zzz') ['xxx yyy ', ' xxx yyy ', ''] 17 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos join(sequencia): retorna uma string com todos os elementos da sequencia concatenados. Observação: Os elementos da sequência têm que ser strings. Importante: A string objeto é usada como separador entre os elementos. Exemplo >>> "/".join(("usr","bin","python")) 'usr/bin/python' >>> "Q".join((1,2,3,4,5)) TypeError: sequence item 0: expected string, int found >>> "Q".join(('1','2','3','4','5')) '1Q2Q3Q4Q5' >>> Q.join(('1','2','3','4','5')) Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> Q.join(('1','2','3','4','5')) NameError: name 'Q' is not defined 18 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos strip(ch): retorna a string sem caracteres iniciais ou finais que estejam na string ch. Se ch não for especificada, retira caracteres em branco. Pode-se também usar rstrip() e lstrip() para retirar caracteres, respectivamente, à direita (final) ou à esquerda(início). Exemplo >>> " xxx afdsfa ".strip() 'xxx afdsfa' >>> "xxx yyy zzz xxx".strip("xy ") 'zzz' >>> " xxx".rstrip() ' xxx' 4 19 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos replace(velho,novo,n): substitui as n instâncias da string velho por novo. Se n não for definido, todas as trocas são feitas. Exemplo >>> s = "quem parte e reparte, fica com a maior parte" >>> s.replace("parte","parcela")'quem parcela e reparcela, fica com a maior parcela' >>> s.replace("parte","parcela",2) 'quem parcela e reparcela, fica com a maior parte' 20 Módulo Módulo Módulo Módulo StringStringStringString ---- MétodosMétodosMétodosMétodos translate(trans): retorna uma cópia da string onde os caracteres são substituídos de acordo com a tabela de tradução trans. maketrans(velho,novo): retorna uma tabela de tradução onde os caracteres em velho são substituídos pelos caracteres em novo. Exemplo >>> from string import maketrans #necessário na versão 2.x >>> trans = maketrans('qs', 'kz') # ou trans = “”.maketrans('qs', 'kz') na versão 3.2 >>> s = "que surpresa: quebrei a cara" >>> s.translate(trans) 'kue zurpreza: kuebrei a cara' 21 Caracteres EspeciaisCaracteres EspeciaisCaracteres EspeciaisCaracteres Especiais Caracteres “não imprimíveis” podem ser expressos usando notação “barra-invertida” (\) –\n é o mesmo que new line –\t é o mesmo que tab –\r é o mesmo que carriage return –\b é o mesmo que backspace –\\ é o mesmo que \ >>> print ("hello\nworld") hello world >>> print ("hello\tworld") hello world >>> print ("hello\bworld") helloworld >>> print ("hello\rworld") helloworld >>> print ("hello\\world") hello\world TESTETESTETESTETESTE 22 StringsStringsStringsStrings A notação barra-invertida (\) pode ser desabilitada desde que a constante string seja precedida por um r (erre minúsculo) –São chamadas strings raw (cruas) –Ex.: >>> print("abc\ncd\tef") abc cd ef >>> print(r"abc\ncd\tef") abc\ncd\tef 23 StringsStringsStringsStrings Constantes string podem ser escritas com várias linhas desde que as aspas não sejam fechadas e que cada linha termine com uma barra invertida •Ex.: >>> print("abcd\n\ ... efgh\n\ ... ijk") abcd efgh ijk >>> print("abcd\ ... efgh\ ... ijk") abcdefghijk >>>
Compartilhar