Estrutura de dados

O que é e como funciona a Estrutura de Dados Fila

Uma estrutura de dados é uma maneira de armazenar e relacionar conjuntos de informações de forma organizada e, na maioria das vezes, sequencial. Estas estruturas são muito importantes quando precisamos armazenar um conjunto de dados para ser utilizado em um determinado software. Na computação, há diversos tipos de estruturas de dados que podem ser utilizadas para diferentes fins. Vimos nos artigos anteriores o que é e como funciona a Estrutura de Dados Lista e o que é e como funciona a Estrutura de dados Pilha. Neste artigo veremos o que é e como funciona a Estrutura de Dados Fila.

Python - Estrutura de dados - Parte 1
Curso de Python - Estrutura de dados - Parte 1
CONHEÇA O CURSO

O que é uma Fila?

Fila são estruturas de dados bastante utilizadas na computação, onde o primeiro elemento a ser inserido, será também o primeiro a ser retirado. Desta forma, serão adicionados elementos no fim e removê-los pelo início.

A estrutura de dados fila segue um padrão conhecido como FIFO (first-in first-out), onde o primeiro a entrar é o primeiro a sair.

Imagine o exemplo de um fila do banco, onde diversos usuários a compõe em uma manhã de sexta-feira.

A senhora que chegou a fila às 7 da manhã se posiciona na fila. Como ela foi a primeira a chegar, estará no início da fila, a partir daí todos os usuários do banco que chegarem terão que se posicionar depois da senhora. Ao iniciar o atendimento, o primeiro usuário (início da fila) será atendido. Ao fazer isso, este sairá da fila e o elemento (usuário) que estava atrás deste passará a ser o início da fila. Este comportamento seguirá até que nenhum outro usuário se posicione ao final da fila e todos os usuários da fila sejam atendidos, tornando-a vazia.

Entre os exemplos de uso de uma fila em um sistema, podemos citar a troca de mensagens entre computadores conectados em uma rede ou até mesmo o controle de documentos para impressão, onde as páginas serão impressas da 1 até a 100, por exemplo.

Java - Estrutura de dados - Parte 1
Curso de Java - Estrutura de dados - Parte 1
CONHEÇA O CURSO

Como funciona

Como citado acima, imagine uma fila de um banco. Ao iniciar o atendimento, o primeiro usuário que chegar à fila se posicionará em seu início.

Estrutura de dados Fila

A partir daí, todos os usuários que chegarem à fila serão posicionados ao final dela. À essa funcionalidade de inserção damos o nome de enqueue.

Estrutura de dados Fila

Estrutura de dados Fila

Sempre que um usuário for chamado para ser atendido, este é removido da fila e o usuário que estava na próxima posição passará a ser o início da fila. À essa funcionalidade de remoção damos o nome de dequeue.

Estrutura de dados Fila

Este processo se repete até que a fila esteja vazia e nenhum usuário tenha que ser atendido.

Estrutura de dados Fila

O que é e como funciona a Estrutura de Dados Pilha

Uma estrutura de dados é uma maneira de armazenar e relacionar conjuntos de informações de forma organizada e, na maioria das vezes, sequencial. Estas estruturas são muito importantes quando precisamos armazenar um conjunto de dados para ser utilizado em um determinado software. Na computação, há diversos tipos de estruturas de dados que podem ser utilizadas para diferentes fins. Vimos no artigo anterior o que é e como funciona a Estrutura de Dados Lista e neste artigo veremos o que é e como funciona a Estrutura de Dados Pilha.

Python - Estrutura de dados - Parte 1
Curso de Python - Estrutura de dados - Parte 1
CONHEÇA O CURSO

O que é uma Pilha?

Pilhas são estruturas de dados que armazenam os elementos em um formato sequencial, empilhando um item acima do outro (imagine uma pilha de pratos, por exemplo). Estas estruturas permitem “empilhar” os itens que serão armazenados e “desempilhar” estes elementos da pilha quando precisarmos removê-lo.
Sempre que um novo elemento é inserido (ou empilhado) damos a ele o nome de “topo”, pois é o primeiro elemento ao qual teremos acesso.

Segue um padrão conhecido como LIFO (Last In First Out), onde o último a entrar será o primeiro a sair.
Imagine uma pilha de pratos, sempre que um prato é “empilhado” sob o outro, este último prato empilhado é o mais próximo (ou o topo da pilha) e, caso precisarmos remover um prato, é o prato do topo que será removido da estrutura.

Entre os exemplos de uso de uma pilha em um sistema, podemos citar a navegação entre páginas web ou até mesmo o mecanismo de desfazer/refazer dos editores de texto.

Como funciona a Estrutura de Dados Pilha

Vamos imaginar o cenário onde diversas cores de carros serão adicionados em uma pilha.

Após colocarmos o primeiro elemento em nossa pilha, a mesma poderá ser representada da seguinte forma:

inserindo um elemento em uma pilha

O primeiro elemento “Carro preto” foi adicionado à nossa pilha, representando seu primeiro elemento (Primeiro nó). À esta funcionalidade de inserção de elementos damos o nome de push.

Logo, estaremos inserindo em seguida o próximo elemento “Carro verde”. Este elemento será então inserido logo acima do nosso elemento anterior (carro preto), ficando da seguinte forma:

inserindo um elemento em uma pilha

Desta forma, ao finalizar a inserção de todos os carros, o resultado da nossa pilha será a seguinte:

inserindo um elemento em uma pilha

É possível notar que cada carro foi “empilhado” sob o outro e o último carro inserido é o “topo”. Esta é, basicamente, a funcionalidade de uma pilha.

Java - Estrutura de dados - Parte 1
Curso de Java - Estrutura de dados - Parte 1
CONHEÇA O CURSO

E se quisermos remover elementos?

Como vimos acima, as pilhas seguem o padrão chamado LIFO (Last In First Out), onde o último elemento a entrar será o primeiro elemento a sair. Desta forma, o nosso último elemento inserido foi o “Carro azul”, este será o primeiro elemento a ser retirado.

inserindo um elemento em uma pilha

Após a retirada do nosso “Carro azul”, a pilha ficará da seguinte forma:

inserindo um elemento em uma pilha

O último nó da pilha agora será o “Carro amarelo”, e caso o mesmo tenha que ser retirado, o último da pilha será o “Carro rosa” e assim sucessivamente. Desta forma, o primeiro elemento inserido (Carro preto), também será o último a deixar a pilha de carros. À esta funcionalidade de remoção de elementos damos o nome de pop.

O que é e como funciona a Estrutura de Dados Lista

Uma estrutura de dados é uma maneira de armazenar e relacionar conjuntos de informações de forma organizada e, na maioria das vezes, sequencial. Estas estruturas são muito importantes quando precisamos armazenar um conjunto de dados para ser utilizado em um determinado software.

Na computação, há diversos tipos de estruturas de dados que podem ser utilizadas para diferentes fins. Neste artigo, veremos o que é e como funciona uma das principais, as listas.

Python - Estrutura de dados - Parte 1
Curso de Python - Estrutura de dados - Parte 1
CONHEÇA O CURSO

O que é uma lista?

As listas são estruturas de dados muito utilizadas. Elas armazenam os dados em um formato de lista (dado o nome).

Basicamente, uma lista é, na verdade, um conjunto de estruturas chamadas “nós”. Um nó é uma estrutura que armazena a informação a ser gerenciada por uma lista.

Na computação, existem dois tipos de lista: as listas ligadas e as listas duplamente ligadas.

Cada um dos nós de uma lista ligada, além de conhecer o valor que está sendo armazenado em seu interior, também conhece o elemento posterior a ele: por isso ela é chamada de “lista ligada”, pois os nós são amarrados com essa indicação de qual é o próximo nó.

Como funciona uma lista ligada?

Imagine uma lista ligada com o nome de funcionários de uma empresa. No começo, ela pode se apresentar da seguinte maneira (já que ela está vazia):

Estrutura de Dados - Lista vazia

Quando adicionamos o primeiro nome à nossa lista, nós adicionamos um novo nó a essa lista. Esse nó não sabe quem será o próximo nó, já que nossa lista por hora só possui um único nó. Além disso, nossa lista precisa saber onde ela começa e onde ela termina, por isso, o nó inicial e o nó final também são indicados em uma lista ligada. Após adicionar nosso primeiro nome, nós podemos representar nossa lista da seguinte maneira:

Estrutura de Dados - Lista com um elemento

Como temos um único nó, ele é indicado como o primeiro nó e como o último nó, além de não ter indicação do próximo nó (que ainda não existe).

No momento em que adicionamos um novo nome, nós podemos representar nossa lista com a ilustração abaixo:

Estrutura de Dados - Lista com dois elementos

Veja que, para adicionarmos um novo nó a uma lista ligada, fizemos basicamente as seguintes operações:

  • Apontamos como sendo o último nó da lista o novo nó, já que ele foi o último a ser adicionado;
  • Pegamos quem era anteriormente o último nó e indicamos que o próximo nó dele será este último nó adicionado.
Java - Estrutura de dados - Parte 1
Curso de Java - Estrutura de dados - Parte 1
CONHEÇA O CURSO

Como funciona uma lista duplamente ligada?

As listas duplamente ligadas constituem uma variação das listas ligadas. Por isso, elas apresentam praticamente o mesmo comportamento das listas ligadas.

A grande diferença das listas duplamente ligadas para as listas ligadas é que elas são bidirecionais. Vimos que, naturalmente, não conseguimos “andar para trás” em listas ligadas, pois os nós de uma lista ligada sabem somente quem é o próximo elemento. Nas listas duplamente ligadas, os nós sabem quem é o próximo elemento e também quem é o elemento anterior, o que permite a navegação reversa.

Para essa indicação, os nós também passam a apontar quem é o nó anterior.

Podemos representar uma lista duplamente ligada com dois nós na ilustração abaixo:

Estrutura de Dados - Lista duplamente ligada

Podemos concluir que…

As listas são uma das principais estruturas de dados. Muito utilizada em diversos tipos de soluções, estas estruturas garantem a organização sequencial dos dados. Neste artigo vimos o que é e como funcionam as listas e no próximo veremos o que é e como funcionam as pilhas.

Até lá! 😉

Manipulando mapas no Dart

Os mapas são coleções de dados organizados em um formato chave-valor. Cada elemento inserido em um mapa no Dart possui uma chave a ele relacionado. Os mapas são estruturas muito úteis quando precisamos relacionar cada elemento com um identificador único. Sendo assim, veremos neste artigo os principais métodos para manipulação de mapas no Dart.

Declarando mapas

A declaração de mapas no Dart pode ser feita de duas formas. A primeira é utilizando o construtor da classe Map() , como podemos ver abaixo:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   print(usuario); 
}

O código acima irá criar um mapa e o armazenará na variável usuarioe adicionará as chaves usuario e senha, além de armazenar seus respectivos dados.

A segunda forma de declarar mapas no Dart é utilizando o formato “literal”, adicionando os dados iniciais do mapa entre chaves {}:

void main() { 
   var usuario = {'usuario':'admin','senha':'admin123'}; 
   print(usuario); 
}
Dart - Fundamentos
Curso de Dart - Fundamentos
CONHEÇA O CURSO

Retornando elementos pelo índice

Como vimos anteriormente, a principal característica dos mapas é o armazenamento no formato chave-valor, onde cada valor estará relacionado a uma chave. Com essa estrutura, há casos em que precisamos obter o valor de uma determinada chave.

Para isso, no Dart, é bem simples. Basta acessarmos a chave do elemento que queremos retornar entre colchetes [], como podemos ver abaixo:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   print(usuario['usuario']); 
}

O código acima irá retornar o valor relacionado à chave usuario.

Adicionando elementos

Há duas formas para adicionarmos novos elementos a um dicionário. A primeira é atrelando um elemento a uma chave, como fizemos nos exemplos anteriores:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   usuario['cargo'] = 'gerente';
   print(usuario); 
}

Adicionando elementos no mapa

Já a segunda forma é utilizando o método addAll(), passando como parâmetro uma estrutura no formato chave-valor como parâmetro:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   usuario['cargo'] = 'gerente';
   var novosDados = {'nome': 'Joao', 'sobrenome': 'Silva'};
   usuario.addAll(novosDados);
   print(usuario); 
}

Adicionando elementos com addAll

Removendo elementos de um mapa

Para remover elementos de um mapa, utilizamos o método remove() e passamos a chave do elemento a ser removido:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   usuario['cargo'] = 'gerente';
   var novosDados = {'nome': 'Joao', 'sobrenome': 'Silva'};
   usuario.addAll(novosDados);
   print(usuario); 
   usuario.remove('usuario');
  print(usuario);
}

Removendo elementos nos mapas

Limpando mapas

Há casos em que precisamos limpar toda a estrutura de um mapa. Para isso, o Dart provê o método clear(), como podemos ver abaixo:

void main() { 
   var usuario = new Map(); 
   usuario['usuario'] = 'admin'; 
   usuario['senha'] = 'admin123'; 
   usuario['cargo'] = 'gerente';
   var novosDados = {'nome': 'Joao', 'sobrenome': 'Silva'};
   usuario.addAll(novosDados);
   print(usuario); 
   usuario.clear();
   print(usuario);
}

Limpando mapas

Manipulando listas no Dart

Uma lista é a estrutura de dados mais básica do Dart. Sua estrutura permite armazenar dados em sequência, onde cada elemento possui sua posição de origem, sendo o primeiro elemento armazenado no índice zero e, a cada elemento novo, o índice é incrementado. Com o Dart, há diversos métodos para manipulação de listas, como veremos neste artigo.

Declarando Listas no Dart

As listas no Dart podem ser declaradas de duas formas. A primeira é especificando o seu tamanho total, como podemos ver abaixo:

void main() { 
   var lista = new List(3); 
   lista[0] = 1; 
   lista[1] = 2; 
   lista[2] = 3; 
   print(lista); 
}

O código acima irá criar uma lista com 3 posições disponíveis para armazenar novos elementos.

Já a segunda forma é quando não especificamos o tamanho total da lista e, assim, podemos armazenar quantos elementos forem necessários:

void main() { 
   var lista = new List(); 
   lista.add(1); 
   lista.add(2); 
   print(lista); 
}
Flutter - Fundamentos
Curso de Flutter - Fundamentos
CONHEÇA O CURSO

Imprimindo listas

A impressão de listas no Dart é bem simples, basta utilizarmos o método print() e adicionarmos o nome da lista como parâmetro:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2); 
   var lista2 = new List(3); 
   lista2[0] = 1; 
   lista2[1] = 2; 
   lista2[2] = 3; 
   print(lista); 
   print(lista2); 
}

O código acima irá retornar o seguinte resultado:

Imprimindo Listas

Inserindo elementos na lista

A inserção de elementos em uma lista pode ser feito de duas formas, utilizando o método add() ou atribuindo um valor a uma determinada posição, como podemos ver abaixo:

void main() {
   var lista = new List(); 
   lista.add(1); 
   var lista2 = new List(3); 
   lista2[0] = 1; 
   print(lista); 
   print(lista2); 
}

Retornando tamanho da lista

Para retornar o tamanho de uma lista no Dart, podemos utilizar a propriedade length:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2);
   lista.add(3);
   lista.add(4);
     print("O tamanho da lista é: ${lista.length}");
}

O código acima irá imprimir o tamanho total da lista:

Retornando tamanho da lista

Removendo elementos da lista

Existem diversas formas de remover elementos de uma lista no Dart, a primeira é utilizando o método remove() , passando o valor a ser removido como parâmetro:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2);
   lista.add(3);
   lista.add(4);
   lista.remove(2);
   print(lista);
}

Removendo elementos da lista

A segunda forma de remover elementos de uma lista no Dart é utilizando o método removeAt() e passando a posição do elemento a ser removido:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2);
   lista.add(3);
   lista.add(4);
   lista.removeAt(2);
   print(lista);
}

Removendo posição da lista

A terceira forma é utilizando o método removeLast() , que removerá o último elemento da lista:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2);
   lista.add(3);
   lista.add(4);
   lista.removeLast();
   print(lista);
}

Removendo ultimo elemento

A última forma é utilizando o método removeRange() , que vai remover os elementos de um intervalo específico:

void main() {
   var lista = new List(); 
   lista.add(1); 
   lista.add(2);
   lista.add(3);
   lista.add(4);
   lista.removeRange(0, 2);
   print(lista);
}

Removendo elementos em um intervalo

Manipulando dicionários no Python

Como vimos no artigo sobre as principais estruturas de dados no Python, os dicionários são coleções de itens desordenados com uma diferença bem grande quando comparados às outras coleções (lists, sets, tuples, etc): um elemento dentro de um dicionário possui uma chave atrelada a ele, uma espécie de identificador.

Sendo assim, é muito utilizado quando queremos armazenar dados de forma organizada e que possuem identificação única (como acontece em bancos de dados).

Neste artigo, veremos como manipular os dicionários com os principais métodos disponibilizados pela API de Collections do Python.

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}
print(type(meu_dicionario))

meu_dicionario_2 = dict({1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'})
print(type(meu_dicionario_2))
Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

O código acima, que pode ser visto no seguinte link (https://onlinegdb.com/BJhaeI1fL), criará dois dicionários, o primeiro utilizando as chaves ({}) e separando os elementos das suas chaves com dois pontos (:) e o segundo utilizando o método dict(). As duas formas terão o mesmo resultado:

Retornando elementos pelo índice

Para retornar um elemento pelo seu índice de um dicionário, há duas formas. A primeira é passando, entre colchetes ([]) o índice do elemento desejado. Já a segunda é utilizando o método get() com a posição do elemento como parâmetro:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#get()
print(meu_dicionario[2])
print(meu_dicionario.get(4))

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/rJxkr81GI):

Retornando o tamanho de um dicionário

Para retornar o tamanho de um dicionário, podemos utilizar o método len() e passar o dicionário a ser analisado como parâmetro:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#len()
print(len(meu_dicionario))

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/HyIcSU1fL):

Adicionando elementos em um dicionário

Para inserir novos elementos em um dicionário, existem duas formas. A primeira é passar o valor ao índice de um dicionário e a segunda é utilizando o método update(), passando como parâmetro a chave e o elemento a ser adicionado:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

meu_dicionario[5] = 'Joaquina'
print(meu_dicionario)

meu_dicionario.update({6: 'Pedro'})
print(meu_dicionario)

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/rkzPLI1zI):

Removendo elementos de um dicionário

Para remover elementos de um dicionário utilizamos o método pop() seguido do índice do elemento que deve ser removido. Isso fará com que o elemento seja removido, como podemos ver no código abaixo:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#pop()
meu_dicionario.pop(2)
print(meu_dicionario)

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/H1u2ILkfL):

Conclusão

Os dicionários provêem uma ótima forma para armazenar dados organizados e com um padrão simples de entender, como vimos neste artigo. Saber manipulá-los é fundamental para utilizá-los em nossos projetos.

Manipulando sets no Python

Os sets são uma coleção de itens desordenada, parcialmente imutável e que não podem conter elementos duplicados. Por ser parcialmente imutável, os sets possuem permissão de adição e remoção de elementos.

Além disso, os sets são utilizados, normalmente, com operações matemáticas de união, interseção e diferença simétrica, conforme veremos nos próximos tópicos.

Neste artigo, veremos como manipular os sets com os principais métodos disponibilizados pela API de Collections do Python.

Declarando Sets

Para declarar um set no Python é bem simples. Seus elementos devem estar entre chaves ({}) ou utilizando o método set() do próprio Python, como podemos ver abaixo:

 # Declaração de um set
meu_set = {1, 2, 3, 4, 1}
print(type(meu_set))

meu_set_2 = set([1, 2, 8, 9, 10])
print(type(meu_set_2))

O código acima, que pode ser visto no seguinte link (https://onlinegdb.com/rkPa6QyZ8), criará dois sets, o primeiro utilizando as chaves ({}) e separando os elementos por vírgula (,) e o segundo utilizando o método set(). As duas formas terão o mesmo resultado:

Adicionando, atualizando e removendo elementos dos Sets

Os sets permitem as operações de adição, atualização e remoção de elementos. Para isso, existe um método para cada funcionalidade, como podemos ver abaixo:

meu_set = {1, 2, 3, 4, 1}

# Adicionando elementos
meu_set.add(2)
print("Adição", meu_set)

# Atualizando set
meu_set.update([3, 4, 5, 6])
print("Atualição", meu_set)

# Removendo elemento
meu_set.discard(2)
print("Remoção", meu_set)

Como podemos ver no trecho de código acima, o método add() é responsável por adicionar um elemento ao set, desde que ele já não esteja adicionado, pois os sets não permitem elementos duplicados.

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Já o método update() permite atualizar os sets e adicionar os elementos (que não estejam duplicados) em sua estrutura.

Por fim, o método discard() permite a remoção de um elemento do set.

Operações matemáticas com Sets

Os sets, além das operações de manipulação vistas anteriormente, permitem operações matemáticas como união, interseção, diferença e diferença simétrica, conforme veremos abaixo.

meu_set = {1, 2, 3, 4, 1}
meu_set_2 = set([1, 2, 8, 9, 10])

# União
print("União")
print(meu_set | meu_set_2)
print(meu_set.union(meu_set_2))

# Interseção
print("Interseção")
print(meu_set & meu_set_2)
print(meu_set.intersection(meu_set_2))

# Diferença
print("Diferença")
print(meu_set - meu_set_2)
print(meu_set.difference(meu_set_2))

# Diferença Simétrica
print("Diferença Simétrica")
print(meu_set ^ meu_set_2)
print(meu_set.symmetric_difference(meu_set_2))

O resultado da execução acima pode ser vista no seguinte link: https://onlinegdb.com/Sk_hsEJ-U.


Na união ( | ), todos os elementos dos dois sets serão “unidos” em um, formando um único set com todos os elementos, sem repetí-los, claro.

Na Interseção ( & ), apenas os elementos que estiverem nos dois sets restarão.

Já na diferença ( – ), restarão apenas os elementos que estiverem em um dos set, mas não no segundo.

Por fim, na diferença simétrica ( ^ ), apenas os elementos que estiverem nos dois sets, porém que não se repitam, serão exibidos.

Manipulando tuplas no Python

Como vimos no artigo “Principais estruturas de dados no Python”, as tuplas são estruturas bastante similares às listas, com apenas uma diferença: os elementos inseridos em uma tupla não podem ser alterados, diferente de uma lista onde podem ser alterados livremente. Sendo assim, em um primeiro momento, podemos pensar em uma tupla como uma lista que não pode ser alterada, mas não é bem assim…

É certo que as tuplas possuem diversas características das listas, porém os usos são distintos. As listas são destinadas a serem sequências homogêneas, enquanto que as Tuplas são estruturas de dados heterogêneas.

Sendo assim, apesar de bastante similares, a tupla é utilizada para armazenar dados de tipos diferentes, enquanto que a lista é para dados do mesmo tipo. No Python, há diversos métodos para manipulação de tuplas, como veremos no decorrer deste artigo.

Python - Collections
Curso de Python - Collections
CONHEÇA O CURSO

Declarando Tuplas

A sintaxe para criação de uma tupla, assim como uma lista, também é bem simples. Ao invés de se utilizar colchetes (listas), são utilizados parênteses, como podemos ver abaixo:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros
nome_da_tupla2 = (1, "olá", 1.5) #tupla heterogênea

O resultado da execução do código acima pode ser visto no seguinte link: https://onlinegdb.com/r1Jr4CdyI

Contando elementos em uma Tupla

Para verificar a quantidade de elementos existentes em uma tupla, podemos utilizar o método count() e enviando o valor que queremos verificar como parâmetro:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(nome_da_tupla1.count(1))
nome_da_tupla1 = (1, 1, 2, 3)
print(nome_da_tupla1.count(1))

O resultado da execução acima pode ser visto na imagem abaixo e no seguinte link: https://onlinegdb.com/r13yIDi18

Exibir o índice de um determinado elemento

Para retornar o índice de um determinado elemento em uma tupla, utilizamos o método index(), enviando o valor que queremos pesquisar como parâmetro:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(nome_da_tupla1.index(3))

O resultado da execução acima pode ser visto na imagem abaixo e no seguinte link: https://onlinegdb.com/Hk1WPvikL

Verificar a existência de um elemento na Tupla

Um outro recurso muito utilizado em tuplas é a verificação da existência de um determinado elemento. Para isso, utilizamos o in do Python, como podemos ver abaixo:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(2 in nome_da_tupla1)
print(22 in nome_da_tupla1)

O código acima retornará um True caso o elemento seja encontrado e um False caso não (https://onlinegdb.com/B1iB_wiJU):

Considerações finais

Assim como as listas, as tuplas são ótimas formas para armazenamento de elementos, principalmente se você não quer permitir que estes elementos sejam alterados. Neste artigo vimos algumas das principais funcionalidades das tuplas e suas aplicações.

No próximo artigo desta série veremos como manipular outras estruturas de dados com o Python. Até lá 🙂

Manipulando listas no Python

Vimos no último artigo as principais estruturas de dados presentes no Python, dentre elas, as listas, estrutura mais básica do Python.

Basicamente, uma lista é a estrutura de dados mais básica do Python e armazena os dados em sequência, onde cada elemento possui sua posição na lista, denominada de índice. O primeiro elemento é sempre o índice zero e a cada elemento inserido na lista esse valor é incrementado.

No Python, há diversos métodos para manipulação de listas, conforme veremos neste artigo.

Declarando Listas

A declaração de listas no Python é bem simples. Basicamente, devemos informar, entre colchetes ([]) o conteúdo da lista separados em vírgulas (,):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]
listas_simples_string = ["Olá", "Mundo"]
lista_simples_mesclada = [1, 2, 3, "Olá, mundo", True, 1.5]

Nos exemplos acima, estamos declarando três listas com diferentes tipos de dados. Vale lembrar que uma lista pode conter diferentes tipos de dados, porém não é recomendado a utilização de uma lista para armazenar dados de diferentes tipos em uma mesma estrutura. Nestes casos, a Tupla é a estrutura de dados mais recomendada.

Imprimindo Listas

A impressão de listas no Python é muito simples. Basicamente, utilizamos o método print() e enviamos o nome da lista de queremos imprimir como parâmetro:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]
listas_simples_string = ["Olá", "Mundo"]
lista_simples_mesclada = [1, 2, 3, "Olá, mundo", True, 1.5]

print(lista_simples_inteiro)
print(listas_simples_string)
print(lista_simples_mesclada)

O resultado da execução do código acima pode ser visto no seguinte link: https://onlinegdb.com/HkKIutU6B:

Inserindo elementos na lista

A inserção de elementos em uma lista pode ser feito por dois métodos, o append() e o insert(). O método append() insere o elemento sempre no final da lista, já o insert() irá inserir o elemento em uma posição específica:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Append()
lista_simples_inteiro.append(6)
print(lista_simples_inteiro)

# Insert()
lista_simples_inteiro.insert(2, 100)
print(lista_simples_inteiro)
Python - Estrutura de dados - Parte 1
Curso de Python - Estrutura de dados - Parte 1
CONHEÇA O CURSO

Com a execução do código acima, teremos o seguinte resultado (https://onlinegdb.com/B1Fr7qUTH):

Pode-se notar que o método append() inseriu o valor 6 no final da lista, já o método insert() inseriu o elemento 100 na posição 2 da lista.

Retornando tamanho da Lista

Para retornar o tamanho de uma lista no Python, podemos utilizar o método len() e passar a lista como parâmetro (https://onlinegdb.com/Bklftc86H):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Len()
print(len(lista_simples_inteiro))

Removendo elementos na lista

Para remover elementos de uma lista, utilizamos o método remove(), passando o elemento que queremos excluir da lista como parâmetro (https://onlinegdb.com/ryWR55U6r):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Remove()
lista_simples_inteiro.remove(5)
print(lista_simples_inteiro)

Dividindo listas

No Python, há duas formas de “cortar” listas. A primeira é utilizando os colchetes ([]) para determinar o intervalo do “corte” e a segunda é utilizando o método slice(), passando o intervalo como parâmetro:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

print(lista_simples_inteiro[0:4]) # Cortar lista da posição 0 a 4 (sem incluir a 4)
print(lista_simples_inteiro[1:]) # Cortar lista da posição 1 em diante
print(lista_simples_inteiro[:3]) # Cortar lista do início até a posição 3 (sem incluir a 3)
nova_lista = lista_simples_inteiro[:3] # Criar uma nova lista com base no corte de outra lista
print(nova_lista)

intervalo = slice(1, 4) # Cortar a lista a partir da posição 1 até a 4 (sem incluir a 4)
print(lista_simples_inteiro[intervalo])

Conclusão

As listas são uma ótima forma para armazenar elementos, como vimos neste artigo. Saber manipulá-las é fundamental para que possamos desenvolver nossos projetos e utilizar os melhores recursos da linguagem.

Porém, no Python, as listas não são as únicas estruturas de dados existentes. No próximo artigo desta série veremos como manipular uma outra estrutura bastante utilizada, os Sets.

Principais Estruturas de Dados no Python

No Python, podemos utilizar diversos tipos de estruturas de dados. Estas estruturas resolvem um tipo de problema e podem ser úteis em diversas situações. As principais estruturas são as Listas, Sets, Dicionários e Tuplas e neste artigo veremos as diferenças e principais características de cada uma.

Listas

Uma lista é a estrutura de dados mais básica do Python e armazena os dados em sequência, onde cada elemento possui sua posição na lista, denominada de índice. O primeiro elemento é sempre o índice zero e a cada elemento inserido na lista esse valor é incrementado.

No Python, uma lista pode armazenar qualquer tipo de dado primitivo (string, inteiro, float, etc). Na imagem abaixo podemos ver como uma lista se comporta:

Declarando Listas

Para a criação de uma lista no Python, a sintaxe é a seguinte:

nome_da_lista = [] # Criação de uma lista vazia
nome_da_lista = [1, 2, 3] # Criação de uma lista de inteiros
nome_da_lista = [1, "Olá, mundo!", 1.1] # Criação de uma lista com vários tipos diferentes

Podemos também criar listas dentro de outras listas. Essas são chamadas de nested lists e sua sintaxe é a seguinte:

nome_da_lista = ["Olá, mundo",  [1, 2, 3], ["outra_lista"]]

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de listas no Python.

Tuplas

Uma tupla é uma estrutura bastante similar a uma lista, com apenas uma diferença: os elementos inseridos em uma tupla não podem ser alterados, diferente de uma lista onde podem ser alterados livremente. Sendo assim, em um primeiro momento, podemos pensar em uma tupla como uma lista que não pode ser alterada, mas não é bem assim…

É certo que as tuplas possuem diversas características das listas, porém os usos são distintos. As listas são destinadas a serem sequências homogêneas, enquanto que as Tuplas são estruturas de dados heterogêneas.

Sendo assim, apesar de bastante similares, a tupla é utilizada para armazenar dados de tipos diferentes, enquanto que a lista é para dados do mesmo tipo.

Tuplas x Listas

As tuplas possuem algumas vantagens com relação às listas, que são:

  • Como as tuplas são imutáveis, a iteração sobre elas é mais rápida e, consequentemente, possuem um ganho de desempenho com relação às listas;
  • Tuplas podem ser utilizadas como chave para um dicionário, já que seus elementos são imutáveis. Já com a lista, isso não é possível;
  • Se for necessário armazenar dados que não serão alterados, utilize uma tupla. Isso garantirá que esses sejam protegidos de alterações posteriores.

Declarando Tuplas

A sintaxe para criação de uma tupla, assim como uma lista, também é bem simples. Ao invés de se utilizar colchetes (listas), são utilizados parênteses, como podemos ver abaixo:

nome_da_tupla = (1, 2, 3) #tupla de inteiros
nome_da_tupla = (1, "olá", 1.5) #tupla heterogênea

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de tuplas no Python.

Sets

No Python, os sets são uma coleção de itens desordenada, parcialmente imutável e que não podem conter elementos duplicados. Por ser parcialmente imutável, os sets possuem permissão de adição e remoção de elementos.

Além disso, os sets são utilizados, normalmente, com operações matemáticas de união, interseção e diferença simétrica, conforme veremos nos próximos tópicos.

Desenvolvedor Python
Formação: Desenvolvedor Python
Aprenda os principais conceitos do Python (uso de variáveis, estruturas condicionais e estruturas de decisão), como trabalhar com orientação à objetos (métodos, construtores, destrutores, classes, herança, polimorfismo e duck-typing), estruturas de dados (Listas, Filas, Pilhas, Árvores Binárias, Dicionários, Conjuntos, Tabelas de Espalhamento e Mapas), banco de dados relacionais (DB API e SQLAlchemy) e como criar aplicações desktop com o Kivy.
CONHEÇA A FORMAÇÃO

Declarando Sets

Para a criação de um set no Python há duas formas: A primeira é bem similar às listas e tuplas, porém utilizando chaves {} para determinar os elementos do set:

nome_do_set = {1, 2, 3, 4}

A segunda é utilizando o método set presente no Python:

nome_do_set = set([1, 2, 3, 4])

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de sets no Python.

Dicionários

No Python, os dicionários são coleções de itens desordenados com uma diferença bem grande quando comparados às outras coleções (lists, sets, tuples, etc): um elemento dentro de um dicionário possui uma chave atrelada a ele, uma espécie de identificador. Sendo assim, é muito utilizado quando queremos armazenar dados de forma organizada e que possuem identificação única (como acontece em bancos de dados).

Um dicionário, portanto, pode ser visto como a figura abaixo:


Onde cada valor é “atrelado” à uma chave, seu identificador. Vale lembrar que, por necessitar que cada valor possua uma chave relacionada a ele, as chaves dos dicionários devem ser únicas para que possam ser acessadas, também, através do seu índice.

As chaves também não são armazenadas em qualquer ordem, elas apenas são associadas aos valores que pertencem.

Declarando Dicionários

Existem duas formas de se criar um dicionário utilizando o Python. A primeira delas é utilizando chaves ( {} ) e separando os elementos das chaves com dois pontos ( : ) e os outros elementos por vírgula ( , ):

nome_do_dicionario = {1: ‘João’, 2: ‘José’}
nome_do_dicionario = {‘nome’: ‘João’, ‘sobrenome’: ‘Silva’}

A segunda forma é utilizando o método dict() com o dicionário sendo passado como parâmetro:

nome_do_dicionario = dict({1: ‘João’, 2: ‘José’})
nome_do_dicionario = dict({‘nome’: ‘João’, ‘sobrenome’: ‘Silva’})

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de sets no Python.

Animou?

No Python, possuímos diversas estruturas prontas para utilizar, como vimos neste artigo, e cada uma resolve um tipo de problema. No próximo artigo, iniciaremos os estudos mais aprofundados de cada uma destas estruturas e como manipulá-las no Python.

Até lá 🙂

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200