Python/Conceitos básicos/Estrutura de dados: mudanças entre as edições
imported>LeonardoG m (Python: Estruturas de dados movido para Python/Conceitos básicos/Estrutura de dados: P�gina movida por bot) |
imported>Marcos Antônio Nunes de Moura m (Foram revertidas as edições de 200.252.216.198 (disc) para a última revisão de Torneira) |
||
(11 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
Em Python existem dois tipos de estruturas de dados: | 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. | * Dicionários é um conjunto de elementos de mapeamentos indexados por chaves. | ||
As | 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: | Exemplo de sequência com strings: | ||
Linha 25: | Linha 22: | ||
</pre> | </pre> | ||
== Dicionários == | |||
Dicionário é o outro tipo de | 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. | ||
Linha 41: | Linha 39: | ||
</pre> | </pre> | ||
== Listas == | |||
As | As sequências mutáveis são as [[w:Lista|listas]]. Listas são elementos entre colchetes e separados por vírgula. Em outras linguagens chamadas de vetor. | ||
<pre> | <pre> | ||
Linha 61: | Linha 60: | ||
</pre> | </pre> | ||
[[ | === Construção de listas === | ||
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'': | |||
<pre> | |||
>>> range(5) | |||
[0, 1, 2, 3, 4] | |||
>>> | |||
</pre> | |||
Para gerar uma lista que comece em um ponto arbitrário, passar este ponto como o início da lista: | |||
<pre> | |||
>>> range(10, 13) | |||
[10, 11, 12] | |||
>>> | |||
</pre> | |||
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: | |||
<pre> | |||
>>> range(5, 0) | |||
[] | |||
>>> range(10, 6, -2) | |||
[10, 8] | |||
>>> | |||
</pre> | |||
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)): | |||
<pre> | |||
for indice in xrange(1, 6): | |||
print indice | |||
</pre> | |||
=== Operações com listas === | |||
Listas podem ser unidas, através de ''extend''. Como a lista é um objeto, usa-se a forma ''lista.extend(lista2)'': | |||
<pre> | |||
>>> lista1 = range(2) | |||
>>> lista2 = range(2, 4) | |||
>>> lista1.extend(lista2) | |||
>>> lista1 | |||
[0, 1, 2, 3] | |||
</pre> | |||
Listas também podem ser replicadas, usando-se ''*''. Note que esta operação é comutativa: | |||
<pre> | |||
>>> [1, 2] * 3 | |||
[1, 2, 1, 2, 1, 2] | |||
>>> 3 * [1, 2] | |||
[1, 2, 1, 2, 1, 2] | |||
>>> | |||
</pre> | |||
=== Pilhas === | |||
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. | |||
<pre> | |||
>>> 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 | |||
</pre> | |||
'''Utilizando as listas como Filas:''' | |||
{{AutoCat}} |
Edição atual tal como às 14h04min de 10 de abril de 2019
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
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
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
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
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
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: