Atualizado: 04/11/2024

Conjuntos - Python

Os conjuntos (set) em Python representam um tipo de coleção que armazena apenas elementos únicos. Para definir um conjunto, utilizam-se chaves, nas quais os elementos são listados:

users = {"Tom", "Tom", "Alice", "Tom"}
print(users)    #  {'Tom', 'Alice'}

Note que, mesmo que o elemento "Tom" esteja presente três vezes na definição do conjunto, a função print o exibe apenas uma vez. Isso ocorre porque os conjuntos contêm apenas valores únicos.

Também é possível criar um conjunto usando a função set(), passando uma lista ou tupla de elementos:

people = ["Tom", "Tom", "Alice", "Tom"]
users = set(people)
print(users)    #  {'Tom', 'Alice'}

A função set é útil para criar um conjunto vazio:

Obtendo o tamanho de um conjunto

A função embutida len() retorna o número de elementos em um conjunto:

users = {"Tom", "Bob", "Alice"}
print(len(users))  # 3

Adicionando elementos

Para adicionar um único elemento, utiliza-se o método add():

users = set()
users.add("John")
print(users)    #  {'John'}

Para adicionar vários elementos, utiliza-se o método update():

users = set()
users.update(["Tom", "Alice", "Bob"])
print(users)    #  {'Tom', 'Alice', 'Bob'}

Removendo elementos

Para remover um elemento, utiliza-se o método remove(): se o elemento não estiver presente, uma exceção será lançada. Portanto, recomenda-se verificar a existência do elemento antes de removê-lo:

users = {"Tom", "Bob", "Alice"}

user = "Tom"
if user in users:
    users.remove(user)
print(users)  # {"Bob", "Alice"}

Outra forma de remover um elemento sem lançar um erro, caso ele não esteja presente, é utilizando o método discard():

users = {"Tom", "Bob", "Alice"}

users.discard("Jonhy")  # "Jonhy" não está presente, método não faz nada
print(users)  # {"Tom", "Bob", "Alice"}

users.discard("Tom")  # "Tom" está presente, método o remove
print(users)  # {"Bob", "Alice"}

Para remover todos os elementos, utiliza-se o método clear():

users.clear()

Iterando sobre um Conjunto

Para percorrer os elementos de um conjunto, pode-se usar o loop for:

users = {"Tom", "Bob", "Alice"}

for user in users:
    print(user)

Nesse caso, a saída será:

Tom
Bob
Alice

Operações com Conjuntos

O método copy() permite copiar o conteúdo de um conjunto para outra variável:

users = {"Tom", "Bob", "Alice"}
students = users.copy()
print(students)  # {"Tom", "Bob", "Alice"}

Unindo Conjuntos

O método union() une dois conjuntos e retorna um novo conjunto:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}

users3 = users.union(users2)
print(users3)  # {"Bob", "Alice", "Sam", "Kate", "Tom"}

Outra forma de unir conjuntos é com o operador de barra vertical [ | ]:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}

users3 = users | users2
print(users3)  # {"Bob", "Alice", "Sam", "Kate", "Tom"}

Interseção de Conjuntos

O método intersection() retorna um novo conjunto contendo apenas os elementos presentes em ambos os conjuntos:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}

users3 = users.intersection(users2)
print(users3)  # {"Bob"}

O operador & pode ser utilizada para o mesmo propósito:

print(users & users2)  # {"Bob"}

O método intersection_update() modifica o conjunto original com os elementos resultantes da interseção:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users.intersection_update(users2)
print(users)  # {"Bob"}

Diferença de Conjuntos

O método difference() retorna um novo conjunto contendo os elementos presentes no primeiro conjunto, mas não no segundo. Isso também pode ser feito com o operador de subtração -:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}

users3 = users.difference(users2)
print(users3)  # {"Tom", "Alice"}
print(users - users2)  # {"Tom", "Alice"}

Diferença Simétrica

A diferença simétrica retorna todos os elementos dos dois conjuntos, exceto os que estão em ambos. Pode ser feita com o método symmetric_difference() ou o operador ^:

users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}

users3 = users.symmetric_difference(users2)
print(users3)  # {"Tom", "Alice", "Sam", "Kate"}

users4 = users ^ users2
print(users4)  # {"Tom", "Alice", "Sam", "Kate"}

Relações entre Conjuntos

O método issubset() verifica se um conjunto é subconjunto de outro:

users = {"Tom", "Alice", "Bob"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}

print(users.issubset(superusers))  # True
print(superusers.issubset(users))  # False

O método issuperset() retorna True se o conjunto atual contiver todos os elementos de outro conjunto:

users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}

print(users.issuperset(superusers))  # False
print(superusers.issuperset(users))  # True

frozenset

O tipo frozenset é uma variação dos conjuntos que não pode ser modificado. Para criá-lo, utiliza-se a função frozenset():

users = frozenset({"Tom", "Bob", "Alice"})

Os frozensets são imutáveis e, portanto, suportam um conjunto limitado de operações, como:

  • len(s): retorna o tamanho do conjunto.

  • x in s: retorna True se o elemento x estiver no conjunto.

  • x not in s: retorna True se o elemento x não estiver no conjunto.

  • s.issubset(t): verifica se s é subconjunto de t.

  • s.issuperset(t): verifica se s contém t.

  • s.union(t): retorna a união dos conjuntos s e t.

  • s.intersection(t): retorna a interseção dos conjuntos s e t.

  • s.difference(t): retorna a diferença entre os conjuntos s e t.

  • s.copy(): retorna uma cópia do conjunto.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com