Conjunto
Definição
Um conjunto (set) é uma coleção não ordenada, não indexada e que não permite elemento duplicado.
Um conjunto pode ser criado com o método set() ou com a especificação de todos os elementos, separados por vírgulas e dentro de chaves {}. O exemplo abaixo mostra a criação de dois conjuntos, x e y, com os mesmos elementos. Note que se usa parêntesis duplos com o método set(), o primeiro parêntesis é do método e o segundo parêntesis delimita os elementos do conjunto.
x = {"teste", 12.3, 1, (1,2,3)} y = set(("teste", 12.3, 1, (1,2,3)))
Exemplos
Para listar os elementos de um conjunto, basta usar a operação in. O exemplo abaixo indica o tipo do elemento do conjunto e o valor do elemento.
x = {"teste", 12.3, 1, (1,2,3)} for i in x: print(type(i), ":", (i))
A resposta é mostrada abaixo. Não é possível definir lista e dicionário como elementos de um conjunto.
<class 'int'> : 1 <class 'str'> : teste <class 'tuple'> : (1, 2, 3) <class 'float'> : 12.3
Para criar um conjunto vazio e verificar o seu conteúdo, basta entrar com
x = {} print("x = ", x)
Métodos
- O método add() permite adicionar um elemento a um conjunto. O programa a seguir adiciona dois elementos ao conjunto x: uma string e um número inteiro. Se o elemento já existe no conjunto, este não sofre mudança.
x = {"teste", 12.3, 1, (1,2,3)} print("x = ", x) x.add("abc") x.add(5) print("x = ", x)
A execução do programa mostra:
x = {1, 'teste', 12.3, (1, 2, 3)} x = {1, 5, 'abc', (1, 2, 3), 12.3, 'teste'}
- O método clear() remove todos os elementos de um conjunto.
x = {"teste", 12.3, 1, (1,2,3)} print("x = ", x) x.clear() print("x = ", x)
A resposta obtida:
x = {1, (1, 2, 3), 12.3, 'teste'} x = set()
- O método copy() cria um objeto diferente que possui elementos com valores idênticos ao do conjunto original.
x = {"teste", 12.3, 1, (1,2,3)} print("id =", id(x), ", x = ", x) y = x.copy() print("id =", id(y), ", y = ", y)
A resposta mostra que x e y possuem id diferentes, portanto são dois objetos distintos apesar de possuírem os mesmos elementos.
id = 140325186436000 , x = {1, 'teste', 12.3, (1, 2, 3)} id = 140325185363296 , y = {1, 'teste', 12.3, (1, 2, 3)}
- O método difference() retorna um conjunto com os elementos que existem em um conjunto e não existe no outro.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "abc", 2} print("Diferença de x para y =", x.difference(y)) print("Diferença de y para x =", y.difference(x))
A resposta mostra primeiro o que não tem em y, depois mostra o que não tem em x.
Diferença de x para y = {1, 'teste', 12.3} Diferença de y para x = {2, 'abc'}
- O método difference_update() remove os elementos de um conjunto que estão também em outro conjunto. O programa
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "abc", 2} x.difference_update(y) print("x =", x)
mostra como resultado
x = {'teste', 1, 12.3}
- O método discard() remove um determinado elemento do conjunto.
x = {"teste", 12.3, 1, (1,2,3)} x.discard((1,2,3)) print("x =", x)
O conjunto x passa a ser:
x = {1, 12.3, 'teste'}
- O método intersection() retorna os elementos comuns em dois conjuntos.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} print("x =", x.intersection(y))
O programa encontra dois elementos que existem tanto em x quanto em y.
x = {'teste', (1, 2, 3)}
- O método intersection_update() remove os elementos de um conjunto que não estão presentes em um outro conjunto.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} x.intersection_update(y) print("x =", x)
A resposta do exemplo é
x = {(1, 2, 3), 'teste'}
- O método isdisjoint() retorna True se os dois conjuntos não possuem elementos em comum e retorna False se os conjuntos possuem pelo menos um elemento comum.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} z = {"python", 16, 14.8} if x.isdisjoint(y): print("x e y não possuem elementos comuns") else: print("x e y possuem elementos comuns") if x.isdisjoint(z): print("x e z não possuem elementos comuns") else: print("x e z possuem elementos comuns")
Note que x e y têm elementos em comum, enquanto x e z são dois conjuntos disjuntos.
x e y possuem elementos comuns x e z não possuem elementos comuns
- O método issubset() verifica se um conjunto é um subconjunto de outro conjunto maior (ou igual).
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} z = {"teste", 12.3} if y.issubset(x): print("y é um subconjunto de x") else: print("y não é um subconjunto de x") if z.issubset(x): print("z é um subconjunto de x") else: print("z não é um subconjunto de x")
A resposta obtida com o programa:
y não é um subconjunto de x z é um subconjunto de x
- O método issuperset() verifica se um conjunto possui um determinado subconjunto.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} z = {"teste", 12.3} if x.issuperset(y): print("x contém o subconjunto y") else: print("x não contém o subconjunto y") if x.issubset(z): print("x contém o subconjunto z") else: print("x contém o subconjunto z")
É fácil notar no programa acima que y \not \subset x e z \subset x .
x não contém o subconjunto y x contém o subconjunto z
- O método pop() remove o primeiro elemento de um conjunto.
x = {"teste", 12.3, 1, (1,2,3)} print("x =", x) x.pop() print("x =", x) x.pop() print("x =", x)
Note que a ordem de retirada dos elementos obedece a ordem usada pelo Python para armazenar os elementos do conjunto.
x = {1, (1, 2, 3), 12.3, 'teste'} x = {(1, 2, 3), 12.3, 'teste'} x = {12.3, 'teste'}
- O método remove() permite remover um determinado elemento do conjunto.
x = {"teste", 12.3, 1, (1,2,3)} x.remove(12.3) print("x =", x)
A resposta do programa é
x = {'teste', 1, (1, 2, 3)}
- O método symmetric_difference() mostra os elementos que só existem em um dos conjuntos (não existem nos dois conjuntos).
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} print(x.symmetric_difference(y))
Os elementos que só existem em x ou que só existem em y são mostrados abaixo.
{1, 2, 'abc', 12.3}
- O método symmetric_difference_update() remove os elementos que estão presentes nos dois conjuntos.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} x.symmetric_difference_update(y) print("x = ", x)
A resposta do programa é
x = {1, 2, 12.3, 'abc'}
- O método union() tem como resultado a união de dois conjuntos.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} print(x.union(y))
O resultado do programa é
{1, 'teste', 2, 'abc', (1, 2, 3), 12.3}
- O método update() atualiza um conjunto usando um outro conjunto.
x = {"teste", 12.3, 1, (1,2,3)} y = {(1,2,3), "teste", "abc", 2} x.update(y) print(x)
O conjunto x ao final do programa é mostrado abaixo.
{1, 2, (1, 2, 3), 12.3, 'abc', 'teste'}