Você está na página 1de 22

Aula 8 Estrutura de Dados

continuao
Computao I - aula 8 - 2011/1 2
Listas - Fatias
Podemos usar a notao de fatias (slices) em listas.
>>> lista = ['a',2,[3,'f'], 'q']
>>> lista [1:]
[2,[3,'f'], 'q']
>>> lista [:1]
['a']
>>> lista [1:2]
[2]
>>> lista [0:-1]
['a',2,[3,'f']]
[indice inicial : indice final+1]
Computao I - aula 8 - 2011/1 3
Listas - Fatias
Atribuio: Atribuio: ao atribuir uma sequncia a uma fatia, os elementos desta
devem ser substituidos pelos elementos daquela.
>>> lista = [1,2,3,4,5]
[1, , !, ", #] [1, $a$, $b$, ", #]
lista[1:3] = [a,b]
[1, , !, ", #] [1, , $a$, $b$]
lista[:] = [a,b]
Computao I - aula 8 - 2011/1 4
Listas - Fatias
Atribuio: Atribuio: ao atribuir uma sequncia a uma fatia, os elementos desta
devem ser substituidos pelos elementos daquela.
>>> lista = [1,2,3,4,5]
[1, , !, ", #] [$a$, $b$, !, ", #]
lista[:] = [a,b]
[1, , !, ", #] [ [$a$, $b$], !, ", #]
lista[:] = [[a,b]]
Computao I - aula 8 - 2011/1 5
Listas - Fatias
Atribuio: Atribuio: ao atribuir uma sequncia a uma fatia, os elementos desta
devem ser substituidos pelos elementos daquela.
>>> lista = [1,2,3,4,5]
>>> novalista = [8,10]
[1, , !, ", #] [1, , 8, 1%, !, ", #]
lista[:] = no!alista
[1, , !, ", #] [ 1, 8, 1%, #]
lista[1:"] = no!alista
Computao I - aula 8 - 2011/1 6
Listas - Fatias
Atribuio: Atribuio: ao atribuir uma sequncia a uma fatia, os elementos desta
devem ser substituidos pelos elementos daquela.
Exerccio
>>> lista = [1,2,3,4,5]
>>> lista [1:1] = ['z']

>>> lista [1:3] = [[7]]

>>> lista [1:-1]= [8,9,10]

>>> lista[:3]="xz"

>>> lista[:3]="a,!,""

>>> lista[:2]=1,2,3

Computao I - aula 8 - 2011/1 7
Listas - Fatias
Atribuio: Atribuio: ao atribuir uma sequncia a uma fatia, os elementos desta
devem ser substituidos pelos elementos daquela.
Exerccio
>>> lista = [1,2,3,4,5]
>>> lista [1:1] = ['z']
[1, 'z', 2, 3, 4, 5, #]
>>> lista [1:3] = [[7]]
[1, [7], 3, 4, 5, #]
>>> lista [1:-1]= [8,9,10]
[1, 8, 9, 10, #]
>>> lista[:3]="xz"
['x', '', 'z', 10, #]
>>> lista[:3]="a,!,""
['a', ',', '!', ',', '"', 10, #]
>>> lista[:2]=1,2,3
[1, 2, 3, '!', ',', '"', 10, #]
Computao I - aula 8 - 2011/1 8
Listas - Fatias
Atribuio: Atribuio: cuidado quando fizer cpia de listas!
Exemplo
>>> l1 = [1,2,3,4,5]
>>> l2 = l1
>>> l1
[1,2,3,4,5]
>>> l2
[1,2,3,4,5]
>>> l2[0]=9
>>> l2
[9,2,3,4,5]
>>> l1
[9,2,3,4,5]
1 3 " #
l1
l
&
Computao I - aula 8 - 2011/1 9
Listas - Fatias
Atribuio: Atribuio: cuidado quando fizer cpia de listas!
Exemplo
>>> l1 = [1,2,3,4,5]
>>> l2 = l1[:]
>>> l1
[1,2,3,4,5]
>>> l2
[1,2,3,4,5]
>>> l2[0]=9
>>> l2
[9,2,3,4,5]
>>> l1
[1,2,3,4,5]
1 3 " #
l1
l
1 3 " #
&
Computao I - aula 8 - 2011/1 10
Listas - Fatias
'ncre(ento: 'ncre(ento: podemos usar incremento / decremento para selecionar os
elementos de uma lista.
Exemplo
>>> lista = [1,2,3,4,5,#]
>>> lista[0:-1:2]
[1, 3, 5]
>>> lista[5:0:-1]
[#, 5, 4, 3, 2]
>>> lista[0:-1:3]
[1, 4]
>>> lista[::-1]
[#, 5, 4, 3, 2, 1]
Computao I - aula 8 - 2011/1 11
Listas - Fatias
'ncre(ento: 'ncre(ento: podemos usar incremento / decremento para selecionar os
elementos de uma lista.
ATENO: Se um incremento de fatia diferente de 1, uma
atribuio fatia deve ter o mesmo nmero de elementos.
>>> l = [1,2,3,4,5]
>>> l[0::2] = ['x','','z']
>>> l
['x',2, '', 4, 'z']
>>> l[0::2] = [#,7]
$%a"&!a"' ()ost %&"&nt "all last*:
+il& ",-s.&ll/17>",lin& 1, in -to-l&v&l-
l [0::2] = [#,7]
0al1&2%%o%: att&)-t to assi3n s&q1&n"& of siz& 2
to &xt&n4&4 sli"& of siz& 3
Computao I - aula 8 - 2011/1 12
Listas - )atri*es
5o4&)os 1sa% listas -a%a a%)az&na% & )ani-1la%
)at%iz&s6
2x&)-lo 2x&)-lo
$3 "
% & #
[ [,$3,"] , [%, &,#] ]
)A+,'- . [ [, -!, "],[%, /, #] ]
for i in ran0e12:
for 3 in ran0e 1!2:
4rint )A+,'-[i][3]
)A+,'- [%] [%] . )A+,'- [1] [%] . %
)A+,'- [%] [1] . -! )A+,'- [1] [1] . /
)A+,'- [%] [] . " )A+,'- [1] [] . #
%
1
% 1
)A+,'- [lin5a] [coluna] )A+,'- [lin5a] [coluna]
Computao I - aula 8 - 2011/1 13
Listas - )atri*es
Exerccio: Exerccio: 7onst%1a 1)a )at%iz 4x3 "o) valo%&s
i31ais a z&%o6 8)-%i)a a )at%iz6
(atri* . []
lin5a . [%]6!
for i in ran0e1"2:
(atri* . (atri*+[lin5a]
for i in ran0e1"2:
for 3 in ran0e 1!2:
4rint (atri*[i][3],
4rint
(atri* . []
for i in ran0e1"2:
(atri* . (atri*7a44end1[%]6!2
for i in ran0e1"2:
for 3 in ran0e 1!2:
4rint (atri*[i][3],
4rint
A+E89:;: estes 4ro0ra(as so e<ui=alentes> A+E89:;: estes 4ro0ra(as so e<ui=alentes>
?ro07 1 ?ro07 1 ?ro07 ?ro07
Computao I - aula 8 - 2011/1 14
Listas - )atri*es
Exerccio: Exerccio: +a9a 1) -%o3%a)a q1& -&%)ita ao
1s1:%io "onst%1i% 1)a )at%iz 4& int&i%os ; x <6
8)-%i)a a )at%iz q1& foi fo%n&"i4a6
Computao I - aula 8 - 2011/1 15
Listas - )atri*es
(atri* . []
8 . in4ut1@8A(ero de lin5as: @2
) . in4ut1@8A(ero de colunas: @2
Biniciali*ando (atri* ?ro07 1 slide 1!
lin5a . [%]6)
for i in ran0e182:
(atri* . (atri*+[lin5a]
B?reenc5endo (atri*
for i in ran0e182:
for 3 in ran0e 1)2:
(ensa0e(.@Entre co( o ele(ento da lin5a @+ str1i+12+@ e coluna @+str13+12+@ : @
(atri*[i][3]. in4ut1(ensa0e(2
B'(4ri(indo (atri*
for i in ran0e182:
for 3 in ran0e 1)2:
4rint (atri*[i][3],
4rint
Exerccio: Exerccio: +a9a 1) -%o3%a)a q1& -&%)ita ao
1s1:%io "onst%1i% 1)a )at%iz 4& int&i%os ; x <6
8)-%i)a a )at%iz q1& foi fo%n&"i4a6
A+E89:;: A+E89:;: +EC+E EC+E +EC+E EC+E
?,;D,A)A ?,;D,A)A
Computao I - aula 8 - 2011/1 16
Listas - )atri*es
(atri* . []
8 . in4ut1@8A(ero de lin5as: @2
) . in4ut1@8A(ero de colunas: @2
Biniciali*ando (atri* ?ro07 slide 1!
for i in ran0e182:
(atri*7a44end1[%]6)2
B?reenc5endo (atri*
for i in ran0e182:
for 3 in ran0e 1)2:
(ensa0e(.@Entre co( o ele(ento da lin5a @+ str1i+12+@ e coluna @+str13+12+@ : @
(atri*[i][3]. in4ut1(ensa0e(2
B'(4ri(indo (atri*
for i in ran0e182:
for 3 in ran0e 1)2:
4rint (atri*[i][3],
4rint
Exerccio: Exerccio: +a9a 1) -%o3%a)a q1& -&%)ita ao
1s1:%io "onst%1i% 1)a )at%iz 4& int&i%os ; x <6
8)-%i)a a )at%iz q1& foi fo%n&"i4a6
A+E89:;: A+E89:;: +EC+E EC+E +EC+E EC+E
?,;D,A)A ?,;D,A)A
Computao I - aula 8 - 2011/1 17
Listas - )atri*es
Exerccio: Exerccio:
Escreva um programa para multiplicar os elementos da diagonal
principal de uma dada matriz por um valor k.
Seu programa deve comear lendo o tamanho da matriz e em seguida
ler os valores da matriz. Depois, leia o valor de k.
Imprima a matriz resultante.
Computao I - aula 8 - 2011/1 18
Listas - )atri*es
Exerccio: Exerccio:
Escreva um programa para multiplicar os elementos da diagonal
principal de uma dada matriz por um valor k.
Seu programa deve comear lendo o tamanho da matriz e em seguida
ler os valores da matriz. Depois, leia o valor de k.
Imprima a matriz resultante.
'1 = []
'1lin(a = in)ut(*+,mero de lin(as e colunas da matri- : *)
.iniciali-ando matri-
...
.Preenc(endo matri-
...
. /ntre com o !alor de 0
0 = in)ut(*1alor )ara multi)licar a dia2onal )rinci)al : *)
.'ulti)licando dia2inal )or 0
for i in ran2e('1lin(a):
'1[i][i]='1[i][i]30

.4m)rimindo matri-
for i in ran2e('1lin(a):
for 5 in ran2e ('1col):
)rint '1[i][5],
)rint
Computao I - aula 8 - 2011/1 19
Listas - )atri*es
Exerccio: Exerccio:
Escreva um programa para computar a linha de maior soma de uma
matriz.
Seu programa deve comear lendo o tamanho da matriz e em seguida
ler os valores da matriz.
Aps determinar a linha de maior soma, esta linha deve ser impressa
assim como sua soma.
Computao I - aula 8 - 2011/1 20
Listas - )atri*es
Exerccio: Exerccio:
Escreva um programa para computar a linha de maior soma de uma
matriz.
Seu programa deve comear lendo o tamanho da matriz e em seguida
ler os valores da matriz.
Aps determinar a linha de maior soma, esta linha deve ser impressa
assim como sua soma.
'1 = []
'1lin(a = in)ut(*+,mero de lin(as da matri- : *)
'1col = in)ut(*+,mero de colunas da matri- : *)
.iniciali-ando matri-
6
.Preenc(endo matri-
...
.78lculando soma das lin(as
maiorsoma=%
maiorlin(a=1
for 5 in ran2e('1col):
maiorsoma=maiorsoma9'1[%][5]
for i in ran2e(1,'1lin(a):
soma = %
for 5 in ran2e('1col):
soma=soma9'1[i][5]
if soma : maiorsoma:
maiorsoma=soma
maiorlin(a=i91

.4m)rimindo matri-
for i in ran2e('1lin(a):
for 5 in ran2e ('1col):
)rint '1[i][5],
)rint *lin(a de maior soma ; <d com !alor <d
e elementos * < (maiorlin(a,maiorsoma),
)rint '1[maiorlin(a$1]
Computao I - aula 8 - 2011/1 21
Listas - )atri*es
Exerccio: Exerccio:
Escreva um programa para computar o produto de duas matrizes m1 e
m2.
Seu programa deve comear lendo os tamanhos das matrizes e
veriicando se s!o de tamanhos compat"veis para multiplica!o.
Em seguida aa a leitura preechendo os valores das matrizes m1 e m2.
#inalmente aa o c$lculo matem$tico, imprimindo a matriz inal no
ormato tradicional.
Computao I - aula 8 - 2011/1 22
Aula 8 Estrutura de Dados
continuao

Você também pode gostar