computação i - python aula 6 - teórica: listascomputac˜ao i - python aula 6 - teo´rica: listas...

34
Computa¸ ao I - Python Aula 6 - Te´ orica: Listas Jo˜ ao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆ encia da Computa¸ ao - UFRJ http://www.dcc.ufrj.br/˜pythonUFRJ/ Computa¸ ao I - Python Aula 6 1 / 31

Upload: others

Post on 30-Sep-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Computacao I - Python

Aula 6 - Teorica: Listas

Joao C. P. da Silva

Carla A. D. M. Delgado

Ana Luisa Duboc

Dept. Ciencia da Computacao - UFRJ

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 1 / 31

Page 2: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 2 / 31

Page 3: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 3 / 31

Page 4: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 4 / 31

Page 5: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ’ ] ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 5 / 31

Page 6: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Listas - Fatias

Incremento: podemos usar incremento / decremento para selecionar oselementos de uma fatia:

[start : end : step] : vai do ındice start ate end (sem ultrapassa-lo), com passostep.

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 6 / 31

Page 7: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Listas - Fatias

Incremento: podemos usar incremento / decremento para selecionar oselementos de uma fatia:

[start : end : step] : vai do ındice start ate end (sem ultrapassa-lo), com passostep.

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 7 / 31

Page 8: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Listas - Fatias

Atribuicao: ao atribuir uma sequencia a uma fatia, os elementos destadevem ser substituıdos pelos elementos daquela.

1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 8 / 31

Page 9: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Listas - Fatias

Atribuicao: ao atribuir uma sequencia a uma fatia, os elementos destadevem ser substituıdos pelos elementos daquela.

1 >>> l i s t a = [ 1 , 2 , 3 , 4 , 5 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 9 / 31

Page 10: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Listas - Fatias

Atribuicao: ao atribuir uma sequencia a uma fatia, os elementos destadevem 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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 10 / 31

Page 11: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 11 / 31

Page 12: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 12 / 31

Page 13: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 13 / 31

Page 14: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 14 / 31

Page 15: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 15 / 31

Page 16: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

Alem dos operadores + (concatenacao) e * (usado para multiplasconcatenacoes) podemos manipular listas usando:

append : outra forma de concatenacao. Neste caso, a lista e tratadacomo uma fila.

extend : permite adicionar os elementos de uma lista a outra.

del : remover elemento de uma lista.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 16 / 31

Page 17: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ’ ] ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 17 / 31

Page 18: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ’ ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 18 / 31

Page 19: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 19 / 31

Page 20: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

list.insert(lista,ındice, elemento): insere elemento na lista na posicao indicada por ı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 e None!

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 20 / 31

Page 21: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

list.remove(lista, elemento): Remove da lista o primeiro elemento igual aelemento. 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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 21 / 31

Page 22: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

list.remove(lista, elemento): Remove da lista o primeiro elemento igual aelemento. 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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 22 / 31

Page 23: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 que se desejadeletar: del lista[3]

Enquanto que para o remove basta indicar o elemento a ser deletado:list.remove(lista, 1)

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 23 / 31

Page 24: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

list.pop(lista, ındice): Remove da lista o elemento na posicao ındice e o retorna.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.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 24 / 31

Page 25: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

list.count(lista, elemento): Retorna quantas vezes o elemento aparece na 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 de elemento nalista. 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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 25 / 31

Page 26: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

OBSERVACAO: Usar o index para saber se o elemento esta numalista nao e uma boa ideia, porque se nao estiver, dara erro.

Uma forma de saber se um elemento esta numa lista e usar o in,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

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 26 / 31

Page 27: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da lista aqueleelemento se encontra. Se o elemento nao estiver na lista, retorne uma mensagem. Obs: Garantaque nao havera erro.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 27 / 31

Page 28: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da lista aqueleelemento se encontra. Se o elemento nao estiver na lista, retorne uma mensagem. Obs: Garantaque 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 ’

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 27 / 31

Page 29: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

Faca uma funcao que dada uma lista e um elemento, retorna em que posicao da lista aqueleelemento se encontra. Se o elemento nao estiver na lista, retorne uma mensagem. Obs: Garantaque 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 ’

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 27 / 31

Page 30: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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 ]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 28 / 31

Page 31: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Manipulacao de Listas

ATENCAO

Algumas funcoes que manipulam listas nao possuem valor de retorno:

list.append

list.extend

list.insert

list.remove

list.reverse

list.sort

Enquanto outras possuem:

list.pop

list.count

list.indexhttp://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 29 / 31

Page 32: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

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])

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 30 / 31

Page 33: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Autores

Joao C. P. da Silva Lattes

Carla Delgado Lattes

Ana Luisa Duboc Lattes

Colaboradores

Anamaria Martins Moreira Lattes

Fabio Mascarenhas Lattes

Leonardo de Oliveira Carvalho Lattes

Charles Figueiredo de Barros Lattes

Fabrıcio Firmino de Faria Lattes

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 31 / 31

Page 34: Computação I - Python Aula 6 - Teórica: ListasComputac˜ao I - Python Aula 6 - Teo´rica: Listas Joao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆencia da Computac¸ao

Computacao I - Python

Aula 6 - Teorica: Listas

Joao C. P. da Silva

Carla A. D. M. Delgado

Ana Luisa Duboc

Dept. Ciencia da Computacao - UFRJ

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 6 32 / 31