O tipo de dado Set é semelhante ao Tuple e List, porém não possuem index e seus elementos não podem ser alterados.

Algumas características

  1. Dinâmico
  2. Não ordenado
  3. Acesso randômico a elementos
  4. Não permite elementos repetidos
  5. Aceita apenas adição e remoção de elementos

Inicialmente, vamos aprender algumas operações básicas sobre o tipo de dado Set e mais adiante os métodos nativos.

O tipo de dado Set tem sua instanciação feita de acordo com a sintaxe abaixo:

Sintaxe
nome_variavel = {elemento1, elemento2, elementoN}
Onde
-

A tipo de dado Set aceita elementos heterogêneos durante sua inicialização.

Exemplo 1
_set = {1,0xff,"String",'A',1.99}

print(_set)
Saída
{1, 1.99, 'A', 'String', 255}

Novos elementos podem ser adicionados em um Set com o método add. Essa adição é feita foram de ordem.

Sintaxe
set.add(object)
Onde
-
Exemplo 2
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set.add(2)
print(_set)
Saída
{1, 1.99, 'String', 'A', 255}
{1, 1.99, 2, 'String', 'A', 255}

Para ter acesso a um elemento de um Set, é necessário utilizar, por exemplo, o comando for-in visto em Python: Comandos de Repetição.

Exemplo 3
_set = {1,0xff,"String",'A',1.99}

for el in _set:
    print(el,end=" ")
Saída
String 1 1.99 A 255

Para removermos elementos de uma Set utilizamos os métodos remove e discard como mostrado na sintaxe abaixo. O primeiro remove um a primeira ocorrência de um elemento e o segundo remove um elemento baseado em um índice ou posição.

Sintaxe
discard(object)
remove(object)
Onde
pos: índice do elemento para remoção
object: elemento para remoção
Exception: remove
KeyErro se object não encontrado
Exemplo 4
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set.remove(1)
print(_set)
Saída
{1, 1.99, 'A', 255, 'String'}
{1.99, 'A', 255, 'String'}

Para termos conhecimento do número de elementos contido em um Set, utilizamos a função len que retorna um inteiro contendo o número de elementos.

Sintaxe
len(object)
Exemplo 5
_set = {1,0xff,"String",'A',1.99}

print(len(_set))
Saída
5

Para percorrermos um Set, utilizamos o comando for-in. Esse comando foi visto em Python: Comandos de Repetição.

Exemplo 6
_set = {1,0xff,"String",'A',1.99}

for el in _set:
    print(el,end=" ")
Saída
1 1.99 A String 255 

A utilização do tipo de dado Set como parâmetro, de um método ou função, é feita de forma semelhante a qualquer outro tipo de dados como foi visto em Python: Função, bastando informar o argumento do tipo Set.

Sintaxe
def nome_funcao(parametro_set):
  #corpo
Onde
-
Exemplo 7
_set = {1,0xff,"String",'A',1.99}

def funcao(param):
    for el in param:
        print(el,end=" ")

funcao(_set)
Saída
A 1.99 1 String 255 

A tipo Set fornece métodos para manipular seus dados. Abaixo uma lista de todos os métodos.

Método Descrição Link
add Adiciona um elemento Visitar
clear Remove todos os elementos Visitar
difference Retorna a diference entre sets Visitar
difference_update - Visitar
discard Remove um elemento Visitar
intersection Retorna interseção entre Sets Visitar
intersection_update - Visitar
isdisjoint Verifica se Sets possuem interseção ou não Visitar
issubset Verifica se um Set é subset ou não Visitar
issuperset Verifica se um Set é superset ou não Visitar
pop Remove um elemento aletário de um Set Visitar
remove Remove o primeiro elemento baseado em um valor Visitar
symmetric_difference - Visitar
symmetric_difference_update - Visitar
union Retorna a união de Sets Visitar
update Adiciona elementos de um Set Visitar

Com o método add podemos adicionar um novo elemento ao set. Se esse elemento já existir, o mesmo não será adicionado.

Sintaxe
variavel_set.add(object)
Onde
object: elemento para adicionar
Retorno
None
Exception
-
Exemplo
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set.add(False)
_set.add('B')
print(_set)
Saída
{'String', 1, 1.99, 'A', 255}
{'String', 1, 1.99, False, 'B', 'A', 255}

Com o método clear podemos remover todos os elementos contidos em um Set. Esse método não recebe argumentos e não possui retorno.

Sintaxe
variavel_set.clear()
Onde
-
Retorno
None
Exemplo
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set.add(False)
_set.add('B')
print(_set)
_set.clear()
print(len(_set))
Saída
{1, 1.99, 'A', 'String', 255}
{False, 1, 1.99, 'A', 'String', 'B', 255}
0

Utilizando o método copy, podemos realizar a cópia dos elementos de um Set. Esse método não recebe argumentos e retorna um novo Set baseado nos elementos copiados.

Sintaxe
variavel_set.copy()
Onde
-
Retorno
None
Exemplo
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set2 = _set.copy()
print(_set2)
_set2.add(False)
print(_set2)
Saída
{1, 1.99, 'String', 'A', 255}
{1, 1.99, 'String', 'A', 255}
{False, 1, 1.99, 'String', 'A', 255}

Com o método difference, podemos recuperar a diferentes entre os elementos contidos em dois Sets. Um novo Set é retornado contendo a diferença encontrada.

Sintaxe
variavel_set.difference(set)
Onde
set: set para calcular a diferença
Retorno
Set contendo diferença
Exemplo
_set = {1,0xff,"String",'A',1.99}
_set2 = {1,"String",1.99}

print(_set)
print(_set2)
print(_set.difference(_set2))
Saída
{1, 1.99, 'A', 'String', 255}
{1, 'String', 1.99}
{255, 'A'}

Com o método discard podemos remover um elemento de um Set baseado em seu valor que é passado como argumento para o método.

Sintaxe
variavel_set.discard(object)
Onde
object: elemento para remoção
Retorno
None
Exception
-
Exemplo
_set = {1,0xff,"String",'A',1.99}

print(_set)
_set.discard('A')
print(_set)
Saída
 
{1, 1.99, 'A', 'String', 255}
{1, 1.99, 'String', 255}

Com o método intersection podemos recuperar os elementos contidos na interseção entres dois Sets. Um Set é passado como argumemento e o método retorna um novo set contendo a interceção encontrada.

Sintaxe
variavel_set.intersection(set)
Onde
set: Set para comparação
Retorno
Set contendo elementos da interseção
Exception
-
Exemplo
_set = {1,0xff,"String",'A',1.99}
_set2 = {1,0xee,"String",'B',1.99}

print(_set)
print(_set2)
_set3 = _set.intersection(_set2)
print(_set3)
Saída
 
{1, 1.99, 'A', 'String', 255}
{1, 1.99, 'B', 'String', 238}
{1, 'String', 1.99}

Utilizando o método isdisjoint podemos verificar se dois Sets possuem interseção, ou não, em seus elementos. Um booleano é retornado de acordo com a verificação.

Sintaxe
variavel_set.isdisjoint(set)
Onde
set: Set para verificação de elementos
Retorno
True se nenhum elemento está contido em ambos Sets, False caso contrário
Exemplo
_set =  {1,0xff,"String",'A',1.99}
_set2 = {2,0xee,"String1",'B',2.99}

print(_set)
print(_set2)
ret = _set.isdisjoint(_set2)
print(ret)
Saída
{1, 1.99, 'A', 'String', 255}
{2.99, 2, 'String1', 'B', 238}
True

Com o método issubset podemos verificar se um Set é um subset de um outro Set. Um booleano é retornado de acordo com a verificação.

Sintaxe
variavel_set.issubset(set)
Onde
set: Set para verificação de elementos
Retorno
True se todos elemento estão contidos, False caso contrário
Exemplo
_set =  {"String",'A'}
_set2 = {"String",'A'}

print(_set)
print(_set2)
ret = _set.issubset(_set2)
print(ret)
Saída
{'A', 'String'}
{'A', 'String'}
True

Usando o método issuperset podemos verificar se um Set é superset de um outro Set. Um booleano é retornado de acordo com a verificação.

Sintaxe
variavel_set.issuperset(set)
Onde
set: Set para verificação de elementos
Retorno
True se todos elemento estão contidos, False caso contrário
Exemplo
_set =  {1,0xff,"String",'A',1.99}
_set2 = {"String",'A'}

print(_set)
print(_set2)
ret = _set.issuperset(_set2)
print(ret)
Saída
{'A', 1, 1.99, 'String', 255}
{'A', 'String'}
True

O métodos pop é utilizado para remover e recuperar um elemento aleatório de um Set. Esse método não recebe argumentos e retorna o elemento removido.

Sintaxe
variavel_set.pop()
Onde
-
Retorno
Elemento removido
Exemplo
_set =  {1,0xff,"String",'A',1.99}

print(_set)
ret = _set.pop()
print(_set)
print(ret)
Saída
{1, 1.99, 'A', 'String', 255}
{1.99, 'A', 'String', 255}
1

O métodos remove é utilizados remover a primeira ocorrência de um elemento baseado em seu valor.

Sintaxe
variavel_set.remove(object)
Onde
object: valor do elemento para remoção
Retorno
None
Exception
KeyError se object não existir
Exemplo
_set =  {1,0xff,"String",'A',1.99}

print(_set)
_set.remove('A')
print(_set)
Saída
{1, 1.99, 'A', 'String', 255}
{1, 1.99, 'String', 255}

Com o método union podemos realizar a união de dois Sets. Elementos repetidos são descartados e um novo set é retornado pelo método.

Sintaxe
variavel_set.union(set)
Onde
-
Retorno
Set contendo união
Exemplo
_set1 =  {1,0xff,"String"}
_set2 =  {'A',1.99,1,0xff} #repetidos descartados

print(_set1)
print(_set2)
ret = _set1.union(_set2)
print(ret)
Saída
{1, 'String', 255}
{1.99, 'A', 1, 255}
{1, 1.99, 'A', 'String', 255}

Com o método update podemos adicionar elementos contidos em um Set em um outro Set. Uma cópia de Set atualizado não é feita sendo alterada a própria instância.

Sintaxe
variavel_set.update(set)
Onde
set: Set contendo elementos para adição
myFunc: função customizada de ordenação
Retorno
None
Exemplo
_set1 =  {1,0xff,"String"}
_set2 =  {'A',1.99,1,0xff}

print(_set1)
print(_set2)
_set1.update(_set2)
print(_set1)
Saída
{1, 'String', 255}
{1.99, 'A', 1, 255}
{1, 'String', 1.99, 'A', 255}
  1. 19/09/2024 - revisão 1 - Correção em saída de Ex. 'isdisjoint'; Ajustes em descrições de 'métodos nativos; ajustes gramaticais;
  2. 15/02/2024 - versão inicial