3. Estruturas de Dados
Estruturas de dados são maneiras de agrupar e organizar dados
na memória do computador. Com estruturas de dados, é possível
acessar vários dados sem criar uma variável para cada dado.
Implementar estruturas de dados do zero é complexo, mas
felizmente a linguagem Python já possui implementações
nativas.
2 29
5. Listas
A lista é uma estrutura de dados que agrupa objetos
sequencialmente.
Figura: Ilustração de uma estrutura de lista com 6 objetos do tipo str
(texto)
Cada item da lista é identificado por um índice.
O primeiro item da lista tem índice 0
3 29
6. Listas – criação
Uma lista é definida em Python como uma sequência de
valores ou objetos entre colchetes.
A lista pode ser atribuída a uma variável, e então todos os
objetos da lista serão acessíveis por meio dessa única
variável.
É possível mostrar o conteúdo da lista com print.
Exemplo de código
l i s t a = [10 , 20 , 30 , 40] # l i s t a com 4 objetos int
print ( l i s t a ) #mostra a l i s t a no terminal
4 29
7. Exemplo de código – lista de int
l i s t a = [10 , 20 , 30 , 40] # l i s t a com 4 objetos int
print ( l i s t a ) #mostra a l i s t a no terminal
Exemplo de código – lista de str
# l i s t a com 3 objetos s tr
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ’ ]
print ( l i s t a ) #mostra a l i s t a no terminal
Exemplo de código – lista de str e int
# l i s t a com 6 objetos s tr e int
l i s t a = [ ’ F i l i p e ’ , 10 , ’ Joao ’ , 20 , ’ Ana ’ , 30]
print ( l i s t a ) #mostra a l i s t a no terminal
5 29
8. Listas – índices e acesso
Para acessar um item da lista, você deve digitar o nome da
variável seguido pelo índice do item entre colchetes, com a
seguinte sintaxe: <variável>[<índice>].
Exemplo de código
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ’ ]
print ( l i s t a [ 0 ] ) #escreve F i l i p e
print ( l i s t a [ 1 ] ) #escreve Joao
print ( l i s t a [ 2 ] ) #escreve Ana
Lembre-se sempre de que o primeiro índice é zero!
6 29
9. Listas – atribuições
É possível modificar o valor ou objeto condido em uma posição
da lista fazendo uma atribuição com a seguinte sintaxe:
<variável>[<índice>]=<valor>.
Exemplo de código
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ’ ]
print ( l i s t a ) #mostra a l i s t a
l i s t a [ 1 ] = ’ Matheus ’ # substitui Joao por Matheus
print ( l i s t a ) #mostra a l i s t a modificada
7 29
10. Listas – iteração
É possível fazer uma iteração com for para acessar cada objeto
da lista de duas formas diferentes:
Utilizando índices – um for é utilizado para iterar pelos
índices da lista, e os acessos ou modificações são feitos com
índices.
Sem utilizar índices – um for é utilizado para iterar pelos
itens da lista diretamente, sem usar índices.
8 29
11. Utilize a função len para obter o tamanho da lista.
Iteração com índice
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ]
for i in range ( len ( l i s t a ) ) :
print ( l i s t a [ i ] ) #mostra cada item da l i s t a
Iteração sem índice
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ]
for item in l i s t a :
print ( item ) #mostra cada item da l i s t a
9 29
12. Listas – inserção de elementos
É possível inserir objetos na lista em tempo de execução
utilizando o método append, com a seguinte sintaxe:
<variável>.append(<valor>)
Exemplo de código
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ’ ]
print ( l i s t a ) #Mostra a l i s t a
# Insere ’ Matheus ’ no f i n a l da l i s t a
l i s t a . append ( ’ Matheus ’ )
print ( l i s t a ) #Mostra a l i s t a modificada
10 29
13. Listas – remoção de elementos
É possível remover objetos da lista em tempo de execução
utilizando o operador del, com a seguinte sintaxe: del
<variável>[<índice>]
Exemplo de código
l i s t a = [ ’ F i l i p e ’ , ’ Joao ’ , ’ Ana ’ ]
print ( l i s t a ) #Mostra a l i s t a
del l i s t a [ 1 ] #Remove ’ Joao ’ da l i s t a
print ( l i s t a ) #Mostra a l i s t a modificada
11 29
14. Listas – fatias
É possível obter pedaços de uma lista utilizando slicing, com a
seguinte sintaxe:
Sintaxe
<variável>[<índice inicial> : <índice final> + 1]
onde:
<índice inicial> é o índice do item com o qual
deseja-se iniciar a fatia;
<índice final> é o índice do item com o qual deseja-se
terminar a fatia.
12 29
15. Exemplo de código – slicing
l i s t a = [10 , 24 , 3 , 5 , 8 , 29 , 1 1 ] # cria l i s t a
f a t i a = l i s t a [ 1 : 5 ] #obtem f a t i a do 24 ate o 8
print ( f a t i a ) #mostra a f a t i a
13 29
16. Listas – reversão
É possível obter uma lista “de trás para frente” com a seguinte
sintaxe: <variável>[::-1]
Exemplo de código
l i s t a = [10 , 24 , 3 , 5 , 8 , 29 , 1 1 ] # cria l i s t a
lista_reversa = l i s t a [ : : − 1 ]
#mostra l i s t a de tras para frente
print ( lista_reversa )
14 29
17. Listas – ordenação
É possível ordenar uma lista de números com o método sort.
Em ordem crescente: <variável>.sort()
Em ordem decrescente:
<variável>.sort(reverse=True)
Exemplo de código
l i s t a = [10 , 24 , 3 , 5 , 8 , 29 , 1 1 ] # cria l i s t a
l i s t a . sort ( ) #ordena l i s t a
print ( l i s t a ) #mostra l i s t a ordenada
15 29
18. Desfio – Número Palíndromo
Faça um programa em Python que diga se um número digitado
pelo usuário é palíndromo.
Dica
Utilize a seguinte fórmula para obter a n-ésima casa inteira de
um número decimal x (unidade, dezena, centena):
xn =
j x
10n
k
(mod 10)
Ex: para x = 314, as casas são x0 = 4, x1 = 1 e x2 = 3.
Em Python, esta fórmula fica como x_n = (x//10**n) % 10
16 29
20. Tuplas
Tupla é uma estrutura que, assim como a lista, arranja objetos
de forma sequencial. Porém, a tupla é imutável (não pode ser
modificada).
A sintaxe da tupla é semelhante à da lista, porém sem colchetes.
Exemplo de código
tupla = ’ F i l i p e ’ , ’ Chagas ’ , ’ Ferraz ’
print ( tupla [ 0 ] ) #escreve F i l i p e
print ( tupla [ 1 ] ) #escreve Chagas
print ( tupla [ 2 ] ) #escreve Ferraz
Também é válido utilizar parenteses ao invés de colchetes, como
no seguinte exemplo:
tupla = (’Filipe’, ’Chagas’, ’Ferraz’)
17 29
22. Conjuntos
Conjunto é uma estrutura que agrupa objetos de forma não
ordenada e sem repetições.
Não existem múltiplos valores iguais em um conjunto.
Não existe primeiro item, segundo item, terceiro, item, etc.
Não há ordem no conjunto!
A sintaxe do conjunto é semelhante à da lista, porém com chaves
ao invés de colchetes.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Chagas ’ , ’ Ferraz ’ }
print ( conjunto ) #mostra o conjunto
18 29
23. Conjuntos – operador in
É possível verificar se um valor está contido no conjunto com o
operador in.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
nome = input ( ’ Digite um nome: ’ )
i f nome in conjunto :
print ( ’Nome esta no conjunto ’ )
else :
print ( ’Nome nao esta no conjunto ’ )
19 29
24. Conjuntos – inserção de elementos
É possível inserir objetos em um conjunto com o método add.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
print ( conjunto ) #Mostra o conjunto
conjunto . add ( ’ Matheus ’ ) #adiciona Matheus
print ( conjunto ) #Mostra o conjunto modificado
20 29
25. Conjuntos – remoção de elementos
É possível remover objetos de um conjunto com o método
remove.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
print ( conjunto ) #Mostra o conjunto
conjunto . remove ( ’ F i l i p e ’ ) #remove F i l i p e
print ( conjunto ) #Mostra o conjunto modificado
21 29
26. Conjuntos – conversão de lista
É possível converter uma lista ou uma tupla em um conjunto
usando a palavra set. O conjunto oriundo da conversão terá os
mesmos valores que a lista, porém sem repetições e sem ordem.
Exemplo de código
l i s t a = [ 1 , 1 , 4 , 5 , 4 , 6 , 5 , 1 , 6]
conjunto = set ( l i s t a )
print ( conjunto ) #Mostra o conjunto obtido
Isto pode ser útil caso seja necessário remover dados repetidos
de uma lista.
22 29
27. Conjuntos – iteração
É possível iterar pelos valores de um conjunto utilizando for.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
for nome in conjunto :
print (nome)
23 29
29. Dicionários
Dicionários, também chamados de mapas em outras linguagens,
são estruturas que associam objetos a chaves, de modo que
cada objeto possa ser acessado com uma chave.
24 29
30. Dicionários – criação
Para criar um dicionário, utilize a sintaxe
{<chave1>:<valor1>,...,<chaveN>:<valorN>}.
Exemplo de código
pessoa = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao Silva ’
}
Caso queira criar um dicionário vazio, utilize dict().
25 29
31. Dicionários – acesso
Para acessar uma valor presente em um dicionário a partir de
uma chave, utilize a sintaxe dicionario[<chave>].
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao Silva ’
}
nome = pessoas [ ’ joao . silva@gmail . com ’ ]
print (nome)
26 29
32. Dicionários – modificação
Para adicionar um valor com uma nova chave a um dicionário, ou
modificar um valor associado a uma chave já existente, utilize a
sintaxe dicionario[<chave>] = <valor>.
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao Silva ’
}
#modifica
pessoas [ ’ joao . silva@gmail . com ’ ] = ’ Joao da Silva ’
#adiciona
pessoas [ ’ matheus@gmail . com ’ ] = ’ Matheus ’
print ( pessoas )
27 29
33. Dicionários – remoção de elementos
Para remover uma chave e o respectivo valor, utilize a sintaxe
del dicionario[<chave>].
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao Silva ’
}
#remove joao
del pessoas [ ’ joao . silva@gmail . com ’ ]
#mostra dicionario
print ( pessoas )
28 29
34. Dicionários – iteração
Para iterar pelas chaves de um dicionário, utilize o método keys.
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao Silva ’
}
# iter a por todas as chaves
for k in pessoas . keys ( ) :
print ( ’ chave ’ , k )
print ( ’ valor ’ , pessoas [ k ] )
29 / 29