Resumo: neste tutorial, você aprenderá sobre o tipo set
do Python (Conjuntos) e como usá-lo efetivamente.
Introdução ao tipo set do Python
Um conjunto Python é uma lista não ordenada de elementos imutáveis. Isso significa:
- Os elementos de um conjunto não são ordenados.
- Os elementos de um conjunto são únicos. Um conjunto não permite elementos duplicados.
- Os elementos de um conjunto não podem ser alterados. Por exemplo, eles podem ser números, strings e tuplas, mas não podem ser listas ou dicionários.
Para definir um conjunto em Python, você usa chaves {}
. Por exemplo:
skills = {'Python programming','Databases', 'Software design'}
Observe que um dicionário também usa chaves, mas seus elementos são pares chave-valor.
Para definir um conjunto vazio, você não pode usar as chaves assim:
empty_set = {}
…porque define um dicionário vazio.
Portanto, você precisa usar a função interna set()
:
empty_set = set()
Um conjunto vazio é avaliado como Falso no contexto booleano. Por exemplo:
skills = set()
if not skills:
print('Empty sets are falsy')
Saída:
Empty sets are falsy
Na verdade, você pode passar um iterável para a função set()
para criar um conjunto. Por exemplo, você pode passar uma lista, que é iterável, para a função set()
assim:
skills = set(['Problem solving','Critical Thinking'])
print(skills)
Saída:
{'Critical Thinking', 'Problem solving'}
Observe que a ordem original dos elementos pode não ser preservada.
Se um iterável tiver elementos duplicados, a função set()
os removerá. Por exemplo:
characters = set('letter')
print(characters)
Saída:
{'r', 'l', 't', 'e'}
Neste exemplo, a string 'letter'
tem dois caracteres removidos do cunjunto (t
e e
).
Obtendo tamanhos de um conjunto
Para obter o número de elementos em um conjunto, você usa a função interna len()
.
len(set)
Por exemplo:
ratings = {1, 2, 3, 4, 5}
size = len(ratings)
print(size)
Saída:
5
Verificando se um elemento está em um conjunto
Para verificar se um conjunto contém um elemento, você usa o operador in
:
element in set
O operador in
retorna True
se o conjunto contiver o elemento. Caso contrário, ele retorna False
. Por exemplo:
ratings = {1, 2, 3, 4, 5}
rating = 1
if rating in ratings:
print(f'The set contains {rating}')
Saída:
The set contains 1
Para negar o operador in
, você usa o operador not
. Por exemplo:
ratings = {1, 2, 3, 4, 5}
rating = 6
if rating not in ratings:
print(f'The set does not contain {rating}')
Saída:
The set does not contain 6
Adicionando elementos a um conjunto
Para adicionar um elemento a um conjunto, você usa o método add()
:
set.add(element)
Por exemplo:
skills = {'Python programming', 'Software design'}
skills.add('Problem solving')
print(skills)
Saída:
{'Problem solving', 'Software design', 'Python programming'}
Removendo um elemento de um conjunto
Para remover um elemento de um conjunto, você usa o método remove()
:
set.remove(element)
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.remove('Software design')
print(skills)
Saída:
{'Problem solving', 'Python programming'}
Se você remover um elemento que não existe em um conjunto, receberá um erro (KeyError
). Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.remove('Java')
Erro:
KeyError: 'Java'
Para evitar o erro, você deve usar o operador in
para verificar se um elemento está no conjunto antes de removê-lo:
skills = {'Problem solving', 'Software design', 'Python programming'}
if 'Java' in skills:
skills.remove('Java')
Para tornar mais conveniente, o conjunto possui o método discard()
que permite remover um elemento. E não gera erro se o elemento não estiver na lista:
set.discard(element)
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.discard('Java')
Retornando um elemento de um conjunto
Para remover e retornar um elemento de um conjunto, você usa o método pop()
.
Como os elementos de um conjunto não têm ordem específica, o método pop()
remove um elemento não especificado de um conjunto.
Se você executar o código a seguir várias vezes, ele mostrará um valor diferente a cada vez:
skills = {'Problem solving', 'Software design', 'Python programming'}
skill = skills.pop()
print(skill)
Removendo todos os elementos de um conjunto
Para remover todos os elementos de um conjunto, você usa o método clear()
:
set.clear()
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.clear()
print(skills)
Saída:
set()
Congelado um conjunto
Para tornar um conjunto imutável, você usa a função interna chamada frozenset()
. A função frozenset()
retorna um novo conjunto imutável de um existente. Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills = frozenset(skills)
Depois disso, se você tentar modificar elementos do conjunto, receberá um erro:
skills.add('Django')
Erro:
AttributeError: 'frozenset' object has no attribute 'add'
Percorrendo os elementos do conjunto
Como um conjunto é iterável, você pode usar um loop for para iterar sobre seus elementos. Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
for skill in skills:
print(skill)
Saída:
Software design
Python programming
Problem solving
Para acessar o índice do elemento atual dentro do loop, você pode usar a função interna enumerate()
:
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills):
print(f"{index}.{skill}")
Saída:
0.Software design
1.Python programming
2.Problem solving
Por padrão, o índice começa em zero. Para mudar isso, você passa o valor inicial para o segundo argumento da função enumerate()
. Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills, 1):
print(f"{index}.{skill}")
Saída:
1.Python programming
2.Problem solving
3.Software design
Observe que toda vez que você executar o código, obterá os elementos do conjunto em uma ordem diferente.
No próximo tutorial, você aprenderá como realizar operações úteis em conjuntos como:
- União de Conjuntos
- Interseção de Conjuntos
- Diferença entre conjuntos
- Diferença Simétrica de Conjuntos
Resumo
- Um conjunto é uma coleção não ordenada de elementos imutáveis.