-
Chegou a hora de a gente
dar um olhada no "set",
-
mais uma estrutura de dados
que representa um conjunto de itens.
-
É claro que a gente vai comparar
o set com as outras estruturas.
-
E, quando a gente fala dessa aqui,
a gente está falando também
-
de uma espécie de lista,
ou um conjunto de itens,
-
mas o seu ponto forte é
que ela não é ordenável,
-
ou seja, a gente não tem
o conceito de indexação
-
dentro dos itens de um set.
-
A gente consegue adicionar
e consegue remover itens,
-
consegue iterar, mas não consegue
acessar os itens individualmente
-
usando os seus índices.
-
Vamos lá para o VS Code criar
um set e ver como isso funciona.
-
Eu já tenho o arquivo main.py
criado aqui dentro do VS Code,
-
então vamos começar criando
uma variável chamada "numeros"
-
e o set varia um pouco das outras
estruturas, porque a sua declaração
-
não vai usar colchetes, parênteses
ou alguma coisa do tipo,
-
mas sim um construtor específico
do tipo set,
-
ou seja, a gente vai precisar escrever set
e executar isso aqui.
-
Pronto, a partir desse momento
eu já tenho o meu set construído
-
e eu vou escrever o código aqui
para exibir os itens dele lá no terminal.
-
Então vou colocar aqui print números
-
e vou executar aqui o Python
um ponto x zero ponto barra
-
nem o ponto pai.
-
Legal, eu tenho aqui basicamente
a execução do meu set sem nenhum
-
item dentro.
-
Diferentemente das outras estruturas,
o set não permite que a gente
-
coloque valores iniciais
durante a inicialização do tipo.
-
Então a gente vai basicamente
vim aqui embaixo e colocar números ponto
-
ED, que é o método que permite que a gente
coloque novos valores naquele conjunto.
-
Então eu vou começar colocando aqui o i,
-
depois eu vou colocar o valor dois
e por último o valor três.
-
Se a gente executar
o nosso código novamente,
-
a gente já consegue ver aqui no terminal
entre chaves,
-
os itens daquele nosso conjunto.
-
E agora a gente vai colocar à prova
aquilo que a gente comentou, porque,
-
como eu disse, o set,
ele é um conjunto não ordenado, ou seja,
-
os itens eles, embora estejam aparecendo
aqui na ordem um, dois, três
-
e muito provavelmente vão respeitar
essa ordem conforme a gente for executando
-
em tempo de execução,
não necessariamente estão nessa ordem.
-
E se o nosso set for muito grande,
-
a gente pode até mesmo presenciar
casos em que, ao exibir o item uma vez,
-
um item está numa posição tal
e da outra vez
-
ele vai estar em uma posição
completamente diferente.
-
E por esse motivo,
se a gente insistir e tentar acessar
-
usando os colchetes
alguma posição específica,
-
como por exemplo
a terceira posição no índice dois,
-
o Python retornará um erro para a gente
falando que o set não é subscrito.
-
Tá bom.
-
Ou seja, que a gente não consegue acessar
uma indexação específica
-
Se a característica de acessar os itens
através de índice
-
for realmente necessária,
-
O set não é a melhor estrutura,
porque você tentando fazer o set brilha
-
mesmo na sua característica
de não permitir itens duplicados.
-
Ou seja, enquanto na lista
-
e na tupla a gente consegue colocar
itens repetidos lá dentro.
-
No caso do set é um pouco diferente.
-
Ele simplesmente
não aceita esse tipo de operação,
-
mas ele também não dá um erro.
-
Ele só não a faz
se a gente tentar executar o método ED,
-
passando um valor, por exemplo dois,
e logo em seguida fazer a mesma operação.
-
Ele vai adicionar no primeiro momento,
-
mas a segunda operação
vai ser completamente ignorada,
-
fazendo assim
com que a gente não tenha itens repetidos.
-
Olha só, aqui no nosso código
a gente já colocou 1O2 e o três.
-
Olha o que acontece
se eu repetir um mais algumas vezes?
-
Eu vou tirar aqui esse acesso de índice,
porque ele é uma sintaxe inválida
-
e eu vou limpar o terminal
para poder executar de novo.
-
Repara que a gente manteve os nossos
mesmos três itens,
-
porque na linha três
eu consegui adicionar o valor um,
-
mas nas linhas seguintes
o Python ignorou completamente
-
a ação de adicionar
porque a estrutura do set
-
não permite esse tipo de cenário
e é uma característica dele.
-
A gente também consegue remover itens.
-
Isso é bem parecido com as outras
estruturas,
-
basta que a gente passe para ele
o valor que a gente quer remover.
-
E como nesse caso, não tem repetição,
a gente não precisa nem se preocupar
-
com múltiplas ocorrências.
-
Dá uma olhada aqui.
-
No final eu vou vim
e vou executar o número ponto do Remove
-
e para ele
eu vou passar, por exemplo, o número dois,
-
que é aquele valor que a gente
adicionou aqui logo depois do um.
-
Executando esse código,
a gente consegue ver que o um está lá
-
sem nenhuma repetição,
-
que o três também, mas que o dois
não faz mais parte desse conjunto.
-
A gente está começando a perceber aqui
-
que cada estrutura
tem suas próprias características.
-
Isso é muito importante.
-
Existem cenários em que a gente vai
conseguir, por exemplo,
-
usar uma lista
e usar o set ao mesmo tempo.
-
Mas dependendo
-
do que a gente precisar fazer,
uma vai atender melhor do que a outra.
-
Se a gente precisasse, por exemplo,
receber dez números de um usuário
-
de forma
que esses números não fossem repetidos
-
usando uma lista, a gente teria
que, a cada iteração de um loop,
-
verificar se o que o usuário digitou
já está dentro daquela lista e se tiver,
-
a gente ignora essa operação
e pede o número novamente.
-
Trabalhar com o set
-
vai permitir que a gente chegue
no mesmo resultado,
-
mas de uma forma bem mais simples,
porque esse comportamento
-
que a gente teria que adicionar
através de uma condição
-
é algo nativo daquele tipo, e a gente
não vai ter que se preocupar com isso.