Você está na página 1de 22

Claudio Esperana

Python:
Python:
Tuplas e Strings
Tuplas e Strings
Tuplas
Tuplas

So estruturas de dados parecidas com listas, mas com a


particularidade de serem imutveis

Tuplas so seqncias e, assim como listas, podem ser


indexadas e fatiadas, mas no possvel modific-las

Um valor do tipo tupla uma srie de valores separados por


vrgulas e entre parnteses
>>> x = (1,2,3)
>>> x
(1, 2, 3)
>>> x [0]
1
>>> x [0]=1
...
TypeError: object does not support ite
!ssi"nent
Tuplas
Tuplas

Uma tupla vazia se escreve ()

Os parnteses so opcionais se no provocarem ambigidade

Uma tupla contendo apenas um elemento deve ser escrita com


uma vrgula ao final

Um valor entre parnteses sem vrgula no final meramente


uma expresso:
>>> (10)
10
>>> 10,
(10,)
>>> (10,)
(10,)
>>> 3#(10$3)
3%
>>> 3#(10$3,)
(13, 13, 13)
A funo
A funo
tuple
tuple

Assim como a funo list constri uma lista a partir


de uma seqncia qualquer, a funo tuple constri
uma tupla a partir de uma seqncia qualquer
>>> &ist('!bcd')
[(!(, (b(, (c(, (d(]
>>> tup&e('!bcd')
((!(, (b(, (c(, (d()
>>> tup&e([1,2,3])
(1, 2, 3)
>>> &ist((1,2,3))
[1, 2, 3]
Quando usar tuplas
Quando usar tuplas

Em geral, tuplas podem ser substitudas com


vantagem por listas

Entretanto, algumas construes em Python


requerem tuplas ou seqncias imutveis, por
exemplo:

Tuplas (ao contrrio de listas) podem ser usadas como


chaves de dicionrios

Funes com nmero varivel de argumentos acessam


os argumentos por meio de tuplas

O operador de formatao aceita tuplas, mas no listas


O operador de formatao
O operador de formatao

Strings suportam o operador % que, dada uma string especial


(template) e um valor, produz uma string formatada

O formato geral

template % valor

O template uma string entremeada por cdigos de formatao

Um cdigo de formatao em geral composto do caracter


% seguido de uma letra descritiva do tipo do valor a
formatar (s para string, f para float, d para inteiro, etc)

Exemplo:
>>> (====)d====( ) 100
(====100====(
>>> (====)*====( ) 1
(====1.000000====(
Formatando tuplas
Formatando tuplas

Um template pode ser aplicado aos diversos valores


de uma tupla para construir uma string formatada

Ex.:
>>> tep&!te = ')s te )d !nos'
>>> tup&! = ((+edro(, 10)
>>> tep&!te ) tup&!
(+edro te 10 !nos(

Obs: mais tarde veremos que o operador de


formatao tambm pode ser aplicado a dicionrios
Anatomia das especificaes de
Anatomia das especificaes de
formato
formato

Caracter %

Flags de converso (opcionais):

- indica alinhamento esquerda

+ indica que um sinal deve preceder o valor convertido

(um branco) indica que um espao deve preceder nmeros


positivos

0 indica preenchimento esquerda com zeros

Comprimento mnimo do campo (opcional)

O valor formatado ter este comprimento no mnimo

Se igual a * (asterisco), o comprimento ser lido da tupla

Um . (ponto) seguido pela preciso (opcional)

Usado para converter as casas decimais de floats

Se aplicado para strings, indica o comprimento mximo

Se igual a *, o valor ser lido da tupla

Caracter indicador do tipo de formato


Tipos de formato
Tipos de formato

d, i Nmero inteiro escrito em decimal

o Nmero inteiro sem sinal escrito em octal

u Nmero inteiro sem sinal escrito em decimal

x Nmero inteiro sem sinal escrito em hexadecimal (minsculas)

X Nmero inteiro sem sinal escrito em hexadecimal (maisculas)

e Nmero de ponto flutuante escrito em notao cientfica ('e' minsculo)

E Nmero de ponto flutuante escrito em notao cientfica ('E' maisculo)

f, F Nmero de ponto flutuante escrito em notao convencional

g Mesmo que e se expoente maior que -4. Caso contrario, igual a f

G Mesmo que E se expoente maior que -4. Caso contrario, igual a F

c Caractere nico (usado com inteiro ou string de tamanho 1)

r String (entrada qualquer objeto Python que convertido usando a


funo repr)
Eemplos
Eemplos
>>> ',uero inteiro: )d' ) --
(,uero inteiro: --(
>>> ',uero inteiro co 3 c!s!s: )3d' ) --
(,uero inteiro co 3 c!s!s: --(
>>> '.nteiro co 3 c!s!s e /eros ! es0uerd!: )03d' ) --
(.nteiro co 3 c!s!s e /eros ! es0uerd!: 0--(
>>> '.nteiro escrito e 1ex!deci!&: )x' ) --
(.nteiro escrito e 1ex!deci!&: 32(
>>> *ro !t1 iport pi
>>> '+onto *&utu!nte: )*' ) pi
(+onto *&utu!nte: 3.131-%3(
>>> '+onto *&utu!nte co 12 deci!is: ).12*' ) pi
(+onto *&utu!nte co 12 deci!is: 3.131-%24-3-%0(
>>> '+onto *&utu!nte co 10 c!r!cteres: )10*' ) pi
(+onto *&utu!nte co 10 c!r!cteres: 3.131-%3(
>>> '+onto *&utu!nte e not!c!o cienti*ic!: )10e' ) pi
(+onto *&utu!nte e not!c!o cienti*ic!: 3.131-%3e$00(
>>> '5trin" co t!!n1o !xio de*inido: ).3s' ) '+edro'
(5trin" co t!!n1o !xio de*inido: +ed(
Eemplo: !mprimindo uma ta"ela
Eemplo: !mprimindo uma ta"ela
itens = ['6b!c!te', '7i8o', 'T!n"erin!', '9e&!nci!',
'7!r!nj! d! :1in!']
precos = [2.13, 0.1%, 1.%-, 0.;2, 12.00]
&en<precos = 10 = :o&un! de precos te 10 c!r!cteres
= 6c1!r ! &!r"ur! d! co&un! de itens
&en<itens = &en(itens[0])
*or it in itens : &en<itens = !x(&en<itens,&en(it))
= .priir t!be&! de precos
print '>'#(&en<itens$&en<precos)
print ')>#s)#s' ) (&en<itens, '.te', &en<precos,
'+re?o')
print '>'#(&en<itens$&en<precos)
*or i in r!n"e(&en(itens)):
print ')>#s)#.2*' ) (&en<itens, itens[i],
&en<precos, precos[i])
Eemplo: resultados
Eemplo: resultados
>>>>>>>>>>>>>>>>>>>>>>>>>>
.te +re?o
>>>>>>>>>>>>>>>>>>>>>>>>>>
6b!c!te 2.13
7i8o 0.1%
T!n"erin! 1.%-
9e&!nci! 0.;2
7!r!nj! d! :1in! 12.00
O #$dulo String
O #$dulo String

Manipulao de strings uma atividade freqente


em programas Python

Existe um mdulo chamado strin" que contm


uma grande quantidade de funcionalidades para
trabalhar com strings

Para us-las:
*ro strin" iport #

Entretanto, strings pertencem classe str e a maior


parte do que existe no mdulo string aparece como
mtodos da classe str
Strings: m%todo
Strings: m%todo
find
find

*ind (substring, inicio, fim)

Retorna o ndice da primeira ocorrncia de substring

inicio e fim so opcionais e indicam os intervalos de


ndices onde a busca ser efetuada

Os defaults so 0 e o comprimento da string, respectivamente

Caso substring no aparea na string, retornado -1

Observe que o operador in pode ser usado para dizer


se uma substring aparece numa string
Strings: m%todo
Strings: m%todo
find
find
&eemplo'
&eemplo'
>>> s = '0ue p!rte e rep!rte, *ic! co ! !ior
p!rte'
>>> s.*ind('p!rte')
-
>>> s.*ind('rep!rte')
13
>>> s.*ind('p!rce&!')
>1
>>> 'p!rte' in s
True
>>> s.*ind('p!rte',4)
1-
>>> s.*ind('p!rte',4,12)
>1
Strings: m%todo
Strings: m%todo
join
join

join(seqncia)

Retorna uma string com todos os elementos da


seqncia concatenados

Obs: Os elementos da seqncia tm que ser strings

A string objeto usada como separador entre os


elementos

Ex.:
>>> '@'.join(('usr','bin','pyt1on'))
(usr@bin@pyt1on(
>>> 'A'.join((1,2,3,3,-))
...
TypeError: se0uence ite 0: expected strin",
int *ound
>>> 'A'.join(((1(,(2(,(3(,(3(,(-())
(1A2A3A3A-(
Strings: m%todos
Strings: m%todos
lower
lower
e
e
upper
upper

&oBer()

Retorna a string com todos os caracteres maisculos


convertidos para minsculos

upper()

Retorna a string com todos os caracteres minsculos


convertidos para maisculos

Ex.:
>>> print 'Esper!n?!'.upper()
E5+EC6,D6
>>> print '+E de 7!r!nj! 7i!'.&oBer()
pE de &!r!nj! &i!
Strings: m%todo
Strings: m%todo
replace
replace

rep&!ce(velho,novo,n)

Substitui as instncias da substring velho por novo

Se n for especificado, apenas n instncias so trocadas

Caso contrrio, todas as instncias so trocadas

Ex.:
>>> s = '0ue p!rte e rep!rte, *ic! co ! !ior
p!rte'
>>> s.rep&!ce('p!rte','p!rce&!')
(0ue p!rce&! e rep!rce&!, *ic! co ! !ior
p!rce&!(
>>> s.rep&!ce('p!rte','p!rce&!',2)
(0ue p!rce&! e rep!rce&!, *ic! co ! !ior
p!rte(
Strings: m%todo
Strings: m%todo
split
split

sp&it(separador)

Retorna uma lista com as substrings presentes entre cpias


da string separador

Faz o contrrio do mtodo join

Se separador no for especificado, assumido seqncias de


caracteres em branco, tabs ou newlines

Ex.:
>>> s = 'xxx yyy /// xxx yyy ///'
>>> s.sp&it()
[(xxx(, (yyy(, (///(, (xxx(, (yyy(, (///(]
>>> s.sp&it((xxx()
[((, ( yyy /// (, ( yyy ///(]
Strings: m%todo
Strings: m%todo
strip
strip

strip(ch)

Retorna a string sem caracteres iniciais ou finais que estejam


na string ch

Se ch no for especificada, retira caracteres em branco

Pode-se tambm usar rstrip() para retirar caracteres


direita (final) ou &strip() para retirar caracteres esquerda
(incio)

Ex.:
>>> ' xxx !*ds*! '.strip()
(xxx !*ds*!(
>>> 'xxx yyy /// xxx'.strip('xy ')
(///(
>>> ' xxx '.rstrip()
( xxx(
Strings: m%todo
Strings: m%todo
translate
translate

tr!ns&!te(trans)

Retorna uma cpia da string onde os caracteres so


substitudos de acordo com a tabela de traduo trans

trans uma string com 256 caracteres, um para cada


possvel cdigo de oito bits

Ex.: se trans tem 'X' na posio 65 (correspondente ao caractere


ASCII 'A'), ento, na string retornada, todos os caracteres 'A'
tero sido substitudos por 'X'

Na verdade, as tabelas de traduo so normalmente


construdas com a funo !Fetr!ns do mdulo
strin"
Funo string(ma)etrans
Funo string(ma)etrans

!Fetr!ns (velho, novo)

retorna uma tabela de traduo onde os caracteres em


velho so substitudos pelos caracteres em novo

Ex.:
>>> *ro strin" iport !Fetr!ns
>>> tr!ns = !Fetr!ns((0s(, (F/()
>>> s = '0ue surpres!: 0uebrei ! c!r!'
>>> s.tr!ns&!te(tr!ns)
(Fue /urpre/!: Fuebrei ! c!r!(