computação 1 - python aula 6 - teórica...
TRANSCRIPT
Listas - Fatias
Podemos usar a notacao de fatias (slices) em listas:
[start : end] : vai do ındice start ate o ındice end
[start : ] : vai de start ate o final da lista
[ : end] : vai do inıcio da lista ate end
[ : ] : copia a lista toda
1 >>> c = [−45 ,6 ,3 ,0 ,1 ,19 ,32 ,−23 ,12 ,5 ,−3 ,8 ,2]23 >>> c [−1:−5:1]456 >>> c [−5:−1:1]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
2/ 32
Listas - Fatias
Podemos usar a notacao de fatias (slices) em listas:
[start : end] : vai do ındice start ate o ındice end
[start : ] : vai de start ate o final da lista
[ : end] : vai do inıcio da lista ate end
[ : ] : copia a lista toda
1 >>> c = [−45 ,6 ,3 ,0 ,1 ,19 ,32 ,−23 ,12 ,5 ,−3 ,8 ,2]23 >>> c [−1:−5:1]4 [ ]56 >>> c [−5:−1:1]7 [12 , 5 , −3, 8 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
3/ 32
Listas - Fatias
Podemos usar a notacao de fatias (slices) em listas:
[start : end] : vai do ındice start ate o ındice end
[start : ] : vai de start ate o final da lista
[ : end] : vai do inıcio da lista ate end
[ : ] : copia a lista toda
Exemplo
1 >>> l i s t a = [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ ]23 >>> l i s t a [ 1 : ]456 >>> l i s t a [ : 1 ]789 >>> l i s t a [ 1 : 2 ]
101112 >>> l i s t a [0:−1]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
4/ 32
Listas - Fatias
Podemos usar a notacao de fatias (slices) em listas:
[start : end] : vai do ındice start ate o ındice end
[start : ] : vai de start ate o final da lista
[ : end] : vai do inıcio da lista ate end
[ : ] : copia a lista toda
Exemplo
1 >>> l i s t a = [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ ]23 >>> l i s t a [ 1 : ]4 [ 2 , [ 3 , ’ f ’ ] , ’ q ’ ]56 >>> l i s t a [ : 1 ]7 [ ’ a ’ ]89 >>> l i s t a [ 1 : 2 ]
10 [ 2 ]1112 >>> l i s t a [0:−1]13 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
5/ 32
Listas - Fatias
Incremento: podemos usar incremento / decremento paraselecionar os elementos de uma fatia:
[start : end : step] : vai do ındice start ate end (sem ultrapassa-lo), compasso step.
Exemplo
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 , 6 ]23 >>> l i s t a [0 : −1 : 2 ]456 >>> l i s t a [5 : 0 : −1 ]789 >>> l i s t a [0 : −1 : 3 ]
101112 >>> l i s t a [ : : −1 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
6/ 32
Listas - Fatias
Incremento: podemos usar incremento / decremento paraselecionar os elementos de uma fatia:
[start : end : step] : vai do ındice start ate end (sem ultrapassa-lo), compasso step.
Exemplo
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 , 6 ]23 >>> l i s t a [0 : −1 : 2 ] # I n d i c e 0 at e o i n d i c e −2 de 2 em 24 [ 1 , 3 , 5 ]56 >>> l i s t a [5 : 0 : −1 ] # I n d i c e 5 at e o i n d i c e 1 de 1 em 17 [ 6 , 5 , 4 , 3 , 2 ]89 >>> l i s t a [0 : −1 : 3 ] # I n d i c e 0 at e o i n d i c e −2 de 3 em 3
10 [ 1 , 4 ]1112 >>> l i s t a [ : : −1 ] # I n v e r t e a l i s t a13 [ 6 , 5 , 4 , 3 , 2 , 1 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
7/ 32
Listas - Fatias
Atribuicao: ao atribuir uma sequencia a uma fatia, os elementosdesta devem ser substituıdos pelos elementos daquela.
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
8/ 32
Listas - Fatias
Atribuicao: ao atribuir uma sequencia a uma fatia, os elementosdesta devem ser substituıdos pelos elementos daquela.
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
9/ 32
Listas - Fatias
Atribuicao: ao atribuir uma sequencia a uma fatia, os elementosdesta devem ser substituıdos pelos elementos daquela.
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]2
3 >>> n o v a l i s t a = [ 8 , 1 0 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
10/ 32
Listas - Fatias
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]2 >>> l i s t a [ 1 : 1 ] = [ ’ z ’ ]3
4
5 >>> l i s t a [ 1 : 3 ] = [ [ 7 ] ]6
7
8 >>> l i s t a [1 : −1] = [ 8 , 9 , 1 0 ]9
10
11 >>> l i s t a [ : 3 ] = ” xyz ”12
13
14 >>> l i s t a [ : 3 ] = ”a , b , c ”15
16
17 >>> l i s t a [ : 2 ] = 1 ,2 ,3
Observe que a lista vai sendo alterada
Joao Carlos, Carla Delgado, Ana Luisa Duboc
11/ 32
Listas - Fatias
1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]2 >>> l i s t a [ 1 : 1 ] = [ ’ z ’ ]3 [ 1 , ’ z ’ , 2 , 3 , 4 , 5 ]4
5 >>> l i s t a [ 1 : 3 ] = [ [ 7 ] ]6 [ 1 , [ 7 ] , 3 , 4 , 5 ]7
8 >>> l i s t a [1 : −1] = [ 8 , 9 , 1 0 ]9 [ 1 , 8 , 9 , 10 , 5 ]
10
11 >>> l i s t a [ : 3 ] = ” xyz ”12 [ ’ x ’ , ’ y ’ , ’ z ’ , 10 , 5 ]13
14 >>> l i s t a [ : 3 ] = ”a , b , c ”15 [ ’ a ’ , ’ , ’ , ’ b ’ , ’ , ’ , ’ c ’ , 10 , 5 ]16
17 >>> l i s t a [ : 2 ] = 1 ,2 ,318 [ 1 , 2 , 3 , ’ b ’ , ’ , ’ , ’ c ’ , 10 , 5 ]
Observe que a lista vai sendo alterada
Joao Carlos, Carla Delgado, Ana Luisa Duboc
12/ 32
Alias e Tipos Mutaveis
Relembrando - um alias acontece quando duas variaves se referem ao mesmo dado:
1 >>> y = [ 1 , 2 , 3 ]2 >>> x = y3 >>> x4 [ 1 , 2 , 3 ]5 >>> y6 [ 1 , 2 , 3 ]
Qualquer nova atribuicao feita a uma das variaveis quebrara o alias entre elas.
1 >>> x = [ 4 , 5 , 6 ]2 >>> x3 [ 4 , 5 , 6 ]4 >>> y5 [ 1 , 2 , 3 ]
Porem quando o dado e mutavel (lista!!), o alias nao e quebrado caso uma atribuicao modifique uma parte do dado:
1 >>> y = [ 1 , 2 , 3 ]2 >>> x = y3 >>> x [1 ]=1 . 54 >>> x5 [ 1 , 1 . 5 , 3 ]6 >>> y7 [ 1 , 1 . 5 , 3 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
13/ 32
Listas - Copias
Cuidado quando fizer copia de listas!
1 >>> l 1 = [ 1 , 2 , 3 , 4 , 5 ]2 >>> l 2 = l 13 >>> l 14 [ 1 , 2 , 3 , 4 , 5 ]5
6 >>> l 27 [ 1 , 2 , 3 , 4 , 5 ]8
9 >>> l 2 [0]=910 >>> l 211 [ 9 , 2 , 3 , 4 , 5 ]12
13 >>> l 114 [ 9 , 2 , 3 , 4 , 5 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
14/ 32
Listas - Copias
Cuidado quando fizer copia de listas!
1 >>> l 1 = [ 1 , 2 , 3 , 4 , 5 ]2 >>> l 2 = l 1 [ : ]3 >>> l 14 [ 1 , 2 , 3 , 4 , 5 ]5
6 >>> l 27 [ 1 , 2 , 3 , 4 , 5 ]8
9 >>> l 2 [0]=910 >>> l 211 [ 9 , 2 , 3 , 4 , 5 ]12
13 >>> l 114 [ 1 , 2 , 3 , 4 , 5 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
15/ 32
Manipulacao de Listas
Alem dos operadores + (concatenacao) e * (usado para multiplasconcatenacoes) podemos manipular listas usando:
append : outra forma de concatenacao. Neste caso, a lista etratada como uma fila.
extend : permite adicionar os elementos de uma lista a outra.
del : remover elemento de uma lista.
Joao Carlos, Carla Delgado, Ana Luisa Duboc
16/ 32
Manipulacao de Listas
1 >>> l i s t a =[]2 >>> l i s t . append ( l i s t a , ’ a ’ )3 >>> l i s t a4 [ ’ a ’ ]5
6 >>> l i s t . append ( l i s t a , 2 )7 >>> l i s t a8 [ ’ a ’ , 2 ]9
10 >>> l i s t . append ( l i s t a , [ 3 , ’ f ’ ] )11 >>> l i s t a12 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
17/ 32
Manipulacao de Listas
1 >>> l i s t a2 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] ]34 >>> l i s t . extend ( l i s t a , [ ’ q ’ ] )5 >>> l i s t a6 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ ]78 >>> l i s t . extend ( l i s t a , [ 3 , 7 ] )9 >>> l i s t a
10 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ , 3 , 7 ]1112 >>> l i s t . extend ( l i s t a , 1 0 )13 Traceback (most r e c e n t c a l l l a s t ) :14 F i l e ”<p y s h e l l#11>” , l i n e 1 , i n <module>15 l i s t . extend ( l i s t a , 1 0 )16 TypeError : ’ i n t ’ o b j e c t i s not i t e r a b l e1718 >>> l i s t . extend ( l i s t a , ” bo l a ” )19 >>> l i s t a20 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ , 3 , 7 , ’ b ’ , ’ o ’ , ’ l ’ , ’ a ’ ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
18/ 32
Manipulacao de Listas
1 >>> l i s t a2 [ ’ a ’ , 2 , [ 3 , ’ f ’ ] , ’ q ’ , 3 , 7 , ’ b ’ , ’ o ’ , ’ l ’ , ’ a ’ ]34 >>> d e l l i s t a [ 1 ]5 >>> l i s t a6 [ ’ a ’ , [ 3 , ’ f ’ ] , ’ q ’ , 3 , 7 , ’ b ’ , ’ o ’ , ’ l ’ , ’ a ’ ]78 >>> d e l l i s t a [ 7 ]9 >>> l i s t a
10 [ ’ a ’ , [ 3 , ’ f ’ ] , ’ q ’ , 3 , 7 , ’ b ’ , ’ o ’ , ’ a ’ ]11 # Como o segundo e l emento de l i s t a e uma l i s t a ,12 # posso r e t i r a r de s t a seu segundo e l emento1314 >>> d e l l i s t a [ 1 ] [ 1 ]15 >>> l i s t a16 [ ’ a ’ , [ 3 ] , ’ q ’ , 3 , 7 , ’ b ’ , ’ o ’ , ’ a ’ ]1718 >>> d e l l i s t a [ 2 ] [ 1 ]19 Traceback (most r e c e n t c a l l l a s t ) :20 F i l e ”<p y s h e l l#20>” , l i n e 1 , i n <module>21 d e l l i s t a [ 2 ] [ 1 ]22 TypeError : ’ s t r ’ o b j e c t doesn ’ t suppor t i tem d e l e t i o n
Joao Carlos, Carla Delgado, Ana Luisa Duboc
19/ 32
Manipulacao de Listas
list.insert(lista,ındice, elemento): insere elemento na lista na posicao indicadapor ındice.
1 >>> l i s t a = [ 0 , 1 , 2 , 3 ]23 >>> l i s t . i n s e r t ( l i s t a , 1 , ’ d o i s ’ )45 >>> l i s t a6 [ 0 , ’ d o i s ’ , 1 , 2 , 3 ]
Como o extend, altera a lista ao inves de retornar a lista. O valor retornado eNone!
Atribuicoes a fatias servem para a mesma finalidade mas sao menos legıveis.
1 >>> l i s t a = [ 0 , 1 , 2 , 3 ]23 >>> l i s t a [ 1 : 1 ] = [ ’ d o i s ’ ]45 >>> l i s t a6 [ 0 , ’ d o i s ’ , 1 , 2 , 3 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
20/ 32
Manipulacao de Listas
list.remove(lista, elemento): Remove da lista o primeiro elemento iguala elemento. Se nao existe tal elemento, um erro e gerado.
1 >>> l i s t a = [ ’ o i ’ , ’ a l o ’ , ’ o l a ’ ]2
3 >>> l i s t . remove ( l i s t a , ’ a l o ’ )4
5 >>> l i s t a6 [ ’ o i ’ , ’ o l a ’ ]7
8 >>> l i s t . remove ( l i s t a , ’ oba ’ )9
10 Traceback ( most r e c en t c a l l l a s t ) :11 F i l e ”<p y s h e l l#116>” , l i n e 1 , i n <module>12 l i s t . remove ( l i s t a , ”oba” )13 Va l u eE r r o r : l i s t . remove ( x ) : x not i n l i s t
Joao Carlos, Carla Delgado, Ana Luisa Duboc
21/ 32
Manipulacao de Listas
list.remove(lista, elemento): Remove da lista o primeiro elemento iguala elemento. Se nao existe tal elemento, um erro e gerado.
1 >>> l i s t a = [1 , 3 , 6 , 7 , 1 , 5 , 1 ]2 >>> l i s t . remove ( l i s t a , 1 ) # Remove apenas a p r im e i r a3 # oco r r e n c i a do e lemento !4 >>> l i s t a5 [ 3 , 6 , 7 , 1 , 5 , 1 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
22/ 32
Manipulacao de Listas
Observe a diferenca entre del e remove:
Suponha lista = [4,6,7,1,2], e digamos que quero deletar o elemento 1.
Para o del e preciso indicar o ındice do elemento da lista quese deseja deletar: del lista[3]
Enquanto que para o remove basta indicar o elemento a serdeletado: list.remove(lista, 1)
Joao Carlos, Carla Delgado, Ana Luisa Duboc
23/ 32
Manipulacao de Listas
list.pop(lista, ındice): Remove da lista o elemento na posicao ındice e oretorna. Se ındice nao for mencionado, e assumido o ultimo.
1 >>> l i s t a = [ 1 , 2 , 3 , 4 ]2 >>> l i s t . pop ( l i s t a )3 445 >>> l i s t a6 [ 1 , 2 , 3 ]78 >>> d e l e t a do = l i s t . pop ( l i s t a , 1 )9 >>> d e l e t a do
10 21112 >>> l i s t a13 [ 1 , 3 ]
A diferenca entre del e pop e que este retorna o elemento deletado,enquanto o del nao.
Joao Carlos, Carla Delgado, Ana Luisa Duboc
24/ 32
Manipulacao de Listas
list.count(lista, elemento): Retorna quantas vezes o elemento aparecena lista.
1 >>> l i s t a = [9 , 8 , 33 , 12 , 33 ]2 >>> l i s t . count ( l i s t a , 3 3 )3 2
list.index(elemento): Retorna o ındice da primeira ocorrencia deelemento na lista. Um erro ocorre se elemento nao consta da lista.
1 >>> l i s t . i nd e x ( l i s t a , 33)2 23 >>> l i s t . i nd e x ( l i s t a , 7 )4 Traceback (most r e c e n t c a l l l a s t ) :5 F i l e ”<p y s h e l l#110>” , l i n e 1 , i n <module>6 l i s t a . i nd ex (7)7 Va l u eE r r o r : 7 i s not i n l i s t
Joao Carlos, Carla Delgado, Ana Luisa Duboc
25/ 32
Manipulacao de Listas
OBSERVACAO: Usar o index para saber se o elemento estanuma lista nao e uma boa ideia, porque se nao estiver, daraerro.
Uma forma de saber se um elemento esta numa lista e usar oin, conforme exemplificado abaixo:
1 >>> l i s t a = [ 1 , 4 , 8 , 3 , 2 ]2 >>> 2 i n l i s t a3 True4
5 >>> 10 i n l i s t a6 Fa l s e
Joao Carlos, Carla Delgado, Ana Luisa Duboc
26/ 32
Manipulacao de Listas
Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da listaaquele elemento se encontra. Se o elemento nao estiver na lista, retorne umamensagem. Obs: Garanta que nao havera erro.
Joao Carlos, Carla Delgado, Ana Luisa Duboc
27/ 32
Manipulacao de Listas
Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da listaaquele elemento se encontra. Se o elemento nao estiver na lista, retorne umamensagem. Obs: Garanta que nao havera erro.
1 de f p rocu ra ( l i s t a , e l emento ) :2 ”Funcao que p rocu ra um e lemento em uma l i s t a , e r e t o r n a3 a po s i c a o em que e l e e s t a ou uma mensagem de e r r o4 caso o e l emento nao e s t e j a na l i s t a5 Parametro de Entrada : l i s t , any t ype6 Va l o r de Retorno : i n t / s t r ”78 i f e l emento i n l i s t a :9 r e t u r n l i s t . i nde x ( l i s t a , e l emento )
10 e l s e :11 r e t u r n ’Nao e s t a na l i s t a ’
Joao Carlos, Carla Delgado, Ana Luisa Duboc
27/ 32
Manipulacao de Listas
Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da listaaquele elemento se encontra. Se o elemento nao estiver na lista, retorne umamensagem. Obs: Garanta que nao havera erro.
1 de f p rocu ra ( l i s t a , e l emento ) :2 ”Funcao que p rocu ra um e lemento em uma l i s t a , e r e t o r n a3 a po s i c a o em que e l e e s t a ou uma mensagem de e r r o4 caso o e l emento nao e s t e j a na l i s t a5 Parametro de Entrada : l i s t , any t ype6 Va l o r de Retorno : i n t / s t r ”78 i f e l emento i n l i s t a :9 r e t u r n l i s t . i nde x ( l i s t a , e l emento )
10 e l s e :11 r e t u r n ’Nao e s t a na l i s t a ’
1 >>> po s i c a o = procura ( [ 1 , 4 , 8 , 3 , 2 ] , 2 )2 >>> po s i c a o3 44 >>> po s i c a o = procura ( [ 1 , 4 , 8 , 3 , 2 ] , 7 )5 >>> po s i c a o6 ’Nao e s t a na l i s t a ’
Joao Carlos, Carla Delgado, Ana Luisa Duboc
27/ 32
Manipulacao de Listas
list.reverse(lista): inverte a ordem dos elementos da lista.
1 >>> l i s t a =[1 , 2 , 3 ]2 >>> l i s t . r e v e r s e ( l i s t a )3 >>> l i s t a4 [ 3 , 2 , 1 ]
list.sort(lista): ordena uma lista.
1 >>> l i s t a =[2 , 1 , 3 ]2 >>> l i s t . s o r t ( l i s t a )3 >>> l i s t a4 [ 1 , 2 , 3 ]
Joao Carlos, Carla Delgado, Ana Luisa Duboc
28/ 32
Manipulacao de Listas
ATENCAO
Algumas funcoes que manipulam listas nao possuem valor deretorno:
list.appendlist.extendlist.insertlist.removelist.reverselist.sort
Enquanto outras possuem:
list.poplist.countlist.index
Joao Carlos, Carla Delgado, Ana Luisa Duboc
29/ 32
Manipulacao de Listas
Considere a funcao alteraLista abaixo:1 de f a l t e r a L i s t a ( l i s t a ) :2 ”Parametro de Entrada : l i s t3 Va l o r de Retorno : l i s t ”45 l i s t . append ( l i s t a , 1 0 )6 l i s t . append ( l i s t a , [ 3 , ’ bo l a ’ ] )7 l i s t . append ( l i s t a , ’ l ua ’ )8 l i s t . extend ( l i s t a , [ 1 , 2 , 3 ] )9 l i s t . extend ( l i s t a , ’ l ua ’ )
10 d e l l i s t a [ 2 ]11 l i s t . i n s e r t ( l i s t a , 2 , 1 )12 l i s t . remove ( l i s t a , 2 )13 e l emento = l i s t . pop ( l i s t a , 3 )14 l i s t . i n s e r t ( l i s t a , 1 , e l emento )15 r e t u r n l i s t a
Qual sera a saıda da funcao se a chamada for alteraLista([4,5])
Joao Carlos, Carla Delgado, Ana Luisa Duboc
30/ 32
Autores
Joao C. P. da Silva Lattes
Carla Delgado Lattes
Ana Luisa Duboc Lattes
Colaboradores
Fabio Mascarenhas Lattes
Anamaria Martins Moreira Lattes
Leonardo de Oliveira Carvalho Lattes
Charles Figueiredo de Barros Lattes
Fabrıcio Firmino de Faria Lattes
Joao Carlos, Carla Delgado, Ana Luisa Duboc
31/ 32