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.
229
Listas
Listas
A lista é uma estrutura de dados que agrupa objetos
sequencialmente.
Figura:Ilustração de uma estrutura de lista com 6 objetos do tipostr
(texto)
Cada item da lista é identificado por umíndice.
O primeiro item da lista tem índice 0
329
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 comprint.
Exemplo de código
l i s t a = [10 , 20 , 30 , 40]# l i s t a com 4 objetos i n t
print( l i s t a )#mostra a l i s t a no terminal
429
Exemplo de código – lista deint
l i s t a = [10 , 20 , 30 , 40]# l i s t a com 4 objetos i n t
print( l i s t a )#mostra a l i s t a no terminal
Exemplo de código – lista destr
# l i s t a com 3 objetos s t r
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 destreint
# l i s t a com 6 objetos s t r e i n t
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
529
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!
629
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 ’# s u b s t i t u i Joao por Matheus
print( l i s t a )#mostra a l i s t a modificada
729
Listas – iteração
É possível fazer uma iteração comforpara acessar cada objeto
da lista de duas formas diferentes:
Utilizando índices– umforé utilizado para iterar pelos
índices da lista, e os acessos ou modificações são feitos com
índices.
Sem utilizar índices– umforé utilizado para iterar pelos
itens da lista diretamente, sem usar índices.
829
Utilize a funçãolenpara 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
929
Listas – inserção de elementos
É possível inserir objetos na lista em tempo de execução
utilizando o métodoappend, 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
1029
Listas – remoção de elementos
É possível remover objetos da lista em tempo de execução
utilizando o operadordel, 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
dell 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
1129
Listas – fatias
É possível obter pedaços de uma lista utilizandoslicing, 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.
1229
Exemplo de código –slicing
l i s t a = [10 , 24 , 3 , 5 , 8 , 29 , 1 1 ] # c r i a 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
1329
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 ]# c r i a l i s t a
l i s t a _ r e v e r s a = l i s t a [ : :−1 ]
#mostra l i s t a de tras para frente
print( l i s t a _ r e v e r s a )
1429
Listas – ordenação
É possível ordenar uma lista de números com o métodosort.
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 ]# c r i a 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
1529
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 an-ésima casa inteira de
um número decimalx(unidade, dezena, centena):
xn=
j
x
10
n
k
(mod10)
Ex: parax=314, as casas sãox0=4,x1=1 ex2=3.
Em Python, esta fórmula fica comox_n = (x//10**n) % 10
1629
Tuplas
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’)
1729
Conjuntos
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
1829
Conjuntos – operadorin
É possível verificar se um valor está contido no conjunto com o
operadorin.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
nome =input( ’ D i g i t e um nome : ’ )
i fnomeinconjunto :
print( ’Nome esta no conjunto ’ )
else:
print( ’Nome nao esta no conjunto ’ )
1929
Conjuntos – inserção de elementos
É possível inserir objetos em um conjunto com o métodoadd.
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
2029
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
2129
Conjuntos – conversão de lista
É possível converter uma lista ou uma tupla em um conjunto
usando a palavraset. 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.
2229
Conjuntos – iteração
É possível iterar pelos valores de um conjunto utilizandofor.
Exemplo de código
conjunto = { ’ F i l i p e ’ , ’ Carolina ’ , ’ Andre ’ }
fornomeinconjunto :
print(nome)
2329
Dicionários
Dicionários
Dicionários, também chamados demapasem outras linguagens,
são estruturas que associam objetos a chaves, de modo que
cada objeto possa ser acessado com uma chave.
2429
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 S i l v a ’
}
Caso queira criar um dicionário vazio, utilizedict().
2529
Dicionários – acesso
Para acessar uma valor presente em um dicionário a partir de
uma chave, utilize a sintaxedicionario[<chave>].
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao S i l v a ’
}
nome = pessoas [ ’ joao . silva@gmail . com ’ ]
print(nome)
2629
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
sintaxedicionario[<chave>] = <valor> .
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao S i l v a ’
}
# modifica
pessoas [ ’ joao . silva@gmail . com ’ ] = ’ Joao da S i l v a ’
# adiciona
pessoas [ ’ matheus@gmail . com ’ ] = ’ Matheus ’
print( pessoas )
2729
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 S i l v a ’
}
#remove joao
delpessoas [ ’ joao . silva@gmail . com ’ ]
#mostra dicionario
print( pessoas )
2829
Dicionários – iteração
Para iterar pelas chaves de um dicionário, utilize o métodokeys.
Exemplo de código
pessoas = {
’ fernando . lima@gmail . com ’ : ’ Fernando Lima ’ ,
’ andre . abreu@gmail . com ’ : ’ Andre Abreu ’ ,
’ joao . silva@gmail . com ’ : ’ Joao S i l v a ’
}
# i t e r a por todas as chaves
forkinpessoas . keys ( ) :
print( ’ chave ’ , k )
print( ’ valor ’ , pessoas [ k ] )
29/29