Python/Conceitos básicos/Estrutura de dados

Origem: Wikilivros, livros abertos por um mundo aberto.

Em Python existem dois tipos de estruturas de dados:

  • Sequências: são objetos ordenados e finitos
  • Dicionários é um conjunto de elementos de mapeamentos indexados por chaves.

As sequências imutáveis são as strings e as tuplas, dois ou mais elementos de qualquer tipo dentro de parênteses e separados por vírgula.

Exemplo de sequência com strings:

>>> nome = 'leonardo'
>>> len(nome)
8
>>> nome.capitalize()
'Leonardo'
>>> nome.upper()
'LEONARDO'
>>> nome
'leonardo'
>>>

Dicionários[editar | editar código-fonte]

Dicionário é o outro tipo de sequência que associam objetos. São separados por vírgulas e delimitados por chaves e associados por dois-pontos.


>>> dic = {1:'mar', 2:'oceano', 3:'rio'}
>>> len(dic)
3
>>> dic.items()
[(1, 'mar'), (2, 'oceano'), (3, 'rio')]
>>> dic.keys()
[1, 2, 3]
>>> dic.values()
['mar', 'oceano', 'rio']

Listas[editar | editar código-fonte]

As sequências mutáveis são as listas. Listas são elementos entre colchetes e separados por vírgula. Em outras linguagens chamadas de vetor.

>>> lista = [1,2,3]
>>> lista2 = [3,4,5]
>>> lista.extend(lista2)
>>> lista
[1, 2, 3, 3, 4, 5]
>>> len(lista)
6
>>> lista.reverse()
>>> lista
[5, 4, 3, 3, 2, 1]
>>> lista.sort()
>>> lista
[1, 2, 3, 3, 4, 5]
>>>

Construção de listas[editar | editar código-fonte]

Existem várias formas de gerar listas de números. A mais simples é a função range, que gera uma lista de zero a n-1:

>>> range(5)
[0, 1, 2, 3, 4]
>>>

Para gerar uma lista que comece em um ponto arbitrário, passar este ponto como o início da lista:

>>> range(10, 13)
[10, 11, 12]
>>>

Caso o valor inicial seja maior ou igual ao valor final, a lista é vazia; listas decrescentes, ou listas que tenham um passo diferente de um podem ser geradas com um terceiro parâmetro:

>>> range(5, 0)
[]
>>> range(10, 6, -2)
[10, 8]
>>>

Uma forma curiosa de gerar estas listas é construir o objeto xrange; na prática, fazer um loop com xrange ou com range dá o mesmo resultado; para mais detalhes, consulte o help (help(xrange)):

for indice in xrange(1, 6):
  print indice

Operações com listas[editar | editar código-fonte]

Listas podem ser unidas, através de extend. Como a lista é um objeto, usa-se a forma lista.extend(lista2):

>>> lista1 = range(2)
>>> lista2 = range(2, 4)
>>> lista1.extend(lista2)
>>> lista1
[0, 1, 2, 3]

Listas também podem ser replicadas, usando-se *. Note que esta operação é comutativa:

>>> [1, 2] * 3
[1, 2, 1, 2, 1, 2]
>>> 3 * [1, 2]
[1, 2, 1, 2, 1, 2]
>>>

Pilhas[editar | editar código-fonte]

Agora você deve estar se perguntando: "Sim, mas Python só oferece essas Estruturas de Dados?" Você pode não ter reparado, mas podemos utilizar as listas nativas do Python para trabalharmos com outras estruturas, como Pilhas, Filas, Árvores, Listas de Prioridades(Heaps), etc...

Utilizando as listas como Pilhas: Pilhas nada mais são do que listas em que a inserção e a remoção de elementos acontece na mesma extremidade.

>>> pilha = [10, 20, 30]
>>> pilha.pop()
30
>>> pilha
[10, 20]
>>> pilha.append(50)
>>> pilha
[10, 20, 50]
>>> pilha.append(100)
>>> pilha.pop()
100
>>> pilha.pop()
50
>>> pilha
[10, 20]
>> len(pilha)
2

Utilizando as listas como Filas: