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
Também é possível criar um conjunto usando a função set()
people = ["Tom", "Tom", "Alice", "Tom"]
users = set(people)
print(users) # {'Tom', 'Alice'}
A função set
Obtendo o tamanho de um conjunto
A função embutida len()
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()
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()
users = {"Tom", "Bob", "Alice"}
students = users.copy()
print(students) # {"Tom", "Bob", "Alice"}
Unindo Conjuntos
O método union()
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()
users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users3 = users.intersection(users2)
print(users3) # {"Bob"}
O operador &
print(users & users2) # {"Bob"}
O método intersection_update()
users = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users.intersection_update(users2)
print(users) # {"Bob"}
Diferença de Conjuntos
O método difference()
-
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()
^
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()
users = {"Tom", "Alice", "Bob"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issubset(superusers)) # True
print(superusers.issubset(users)) # False
O método issuperset()
users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issuperset(superusers)) # False
print(superusers.issuperset(users)) # True
frozenset
O tipo frozenset
frozenset()
users = frozenset({"Tom", "Bob", "Alice"})
Os frozensets são imutáveis e, portanto, suportam um conjunto limitado de operações, como:
: retorna o tamanho do conjunto.len(s)
: retornax in s
se o elementoTrue
estiver no conjunto.x
: retornax not in s
se o elementoTrue
não estiver no conjunto.x
: verifica ses.issubset(t)
é subconjunto des
.t
: verifica ses.issuperset(t)
contéms
.t
: retorna a união dos conjuntoss.union(t)
es
.t
: retorna a interseção dos conjuntoss.intersection(t)
es
.t
: retorna a diferença entre os conjuntoss.difference(t)
es
.t
: retorna uma cópia do conjunto.s.copy()