Resumo : neste tutorial, você aprenderá sobre Set
o tipo Python e como usá-lo de forma eficaz.
Introdução ao tipo Python Set
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, 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'}
Linguagem de código: JavaScript ( javascript )
Observe que um dicionário também usa chaves, mas seus elementos são pares de valores-chave.
Para definir um conjunto vazio, você não pode usar chaves assim:
empty_set = {}
…porque define um dicionário vazio.
Portanto, você precisa usar a função integrada set()
:
empty_set = set()
Linguagem de código: JavaScript ( javascript )
Um conjunto vazio é avaliado como False no contexto booleano . Por exemplo:
skills = set()
if not skills:
print('Empty sets are falsy')
Linguagem de código: PHP ( php )
Saída:
Empty sets are falsy
Linguagem de código: PHP ( php )
Na verdade, você pode passar um iterável para a set()
função para criar um conjunto. Por exemplo, você pode passar uma lista, que é iterável, para a set()
função assim:
skills = set(['Problem solving','Critical Thinking'])
print(skills)
Linguagem de código: PHP ( php )
Saída:
{'Critical Thinking', 'Problem solving'}
Linguagem de código: JavaScript ( javascript )
Observe que a ordem original dos elementos pode não ser preservada.
Se um iterável tiver elementos duplicados, a set()
função irá removê-los. Por exemplo:
characters = set('letter')
print(characters)
Linguagem de código: PHP ( php )
Saída:
{'r', 'l', 't', 'e'}
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a string 'letter'
tem dois caracteres e e t e set() remove cada um deles.
Obtendo tamanhos de um conjunto
Para obter o número de elementos em um conjunto, você usa a função integrada len()
.
len(set)
Linguagem de código: JavaScript ( javascript )
Por exemplo:
ratings = {1, 2, 3, 4, 5}
size = len(ratings)
print(size)
Linguagem de código: PHP ( php )
Saída:
5
Verificando se um elemento está em um conjunto
Para verificar se um conjunto contém um elemento, você usa o in
operador:
element in set
Linguagem de código: JavaScript ( javascript )
O in
operador retorna True
se o conjunto contém 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}')
Linguagem de código: PHP ( php )
Saída:
The set contains 1
Linguagem de código: JavaScript ( javascript )
Para negar o in
operador, você usa o not
operador. Por exemplo:
ratings = {1, 2, 3, 4, 5}
rating = 6
if rating not in ratings:
print(f'The set does not contain {rating}')
Linguagem de código: PHP ( php )
Saída:
The set does not contain 6
Linguagem de código: JavaScript ( javascript )
Adicionando elementos a um conjunto
Para adicionar um elemento a um conjunto, você usa o add()
método:
set.add(element)
Linguagem de código: JavaScript ( javascript )
Por exemplo:
skills = {'Python programming', 'Software design'}
skills.add('Problem solving')
print(skills)
Linguagem de código: PHP ( php )
Saída:
{'Problem solving', 'Software design', 'Python programming'}
Linguagem de código: JavaScript ( javascript )
Removendo um elemento de um conjunto
Para remover um elemento de um conjunto, você usa o remove()
método:
set.remove(element)
Linguagem de código: JavaScript ( javascript )
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.remove('Software design')
print(skills)
Linguagem de código: PHP ( php )
Saída:
{'Problem solving', 'Python programming'}
Linguagem de código: JavaScript ( javascript )
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')
Linguagem de código: JavaScript ( javascript )
Erro:
KeyError: 'Java'
Linguagem de código: JavaScript ( javascript )
Para evitar o erro, você deve usar o in
operador 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')
Linguagem de código: JavaScript ( javascript )
Para tornar mais conveniente, o conjunto possui o discard()
método que permite remover um elemento. E não gera erro se o elemento não estiver na lista:
set.discard(element)
Linguagem de código: JavaScript ( javascript )
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.discard('Java')
Linguagem de código: JavaScript ( javascript )
Retornando um elemento de um conjunto
Para remover e retornar um elemento de um conjunto, você usa o pop()
método.
Como os elementos de um conjunto não possuem uma ordem específica, o pop()
método 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)
Linguagem de código: PHP ( php )
Removendo todos os elementos de um conjunto
Para remover todos os elementos de um conjunto, você usa o clear()
método:
set.clear()
Linguagem de código: JavaScript ( javascript )
Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.clear()
print(skills)
Linguagem de código: PHP ( php )
Saída:
set()
Linguagem de código: JavaScript ( javascript )
Congelou um conjunto
Para tornar um conjunto imutável, você usa a função interna chamada frozenset()
. O frozenset()
retorna um novo conjunto imutável de um existente. Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills = frozenset(skills)
Linguagem de código: JavaScript ( javascript )
Depois disso, se você tentar modificar elementos do conjunto, receberá um erro:
skills.add('Django')
Linguagem de código: JavaScript ( javascript )
Erro:
AttributeError: 'frozenset' object has no attribute 'add'
Linguagem de código: JavaScript ( javascript )
Loop através de 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)
Linguagem de código: PHP ( php )
Saída:
Software design
Python programming
Problem solving
enumerate()
Para acessar o índice do elemento atual dentro do loop, você pode usar a função integrada :
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills):
print(f"{index}.{skill}")
Linguagem de código: PHP ( php )
Saída:
0.Software design
1.Python programming
2.Problem solving
Linguagem de código: CSS ( css )
Por padrão, o índice começa em zero. Para mudar isso, você passa o valor inicial para o segundo argumento da enumerate()
função. Por exemplo:
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills, 1):
print(f"{index}.{skill}")
Linguagem de código: PHP ( php )
Saída:
1.Python programming
2.Problem solving
3.Software design
Linguagem de código: CSS ( css )
Observe que toda vez que você executar o código, você obterá os elementos do conjunto em uma ordem diferente.
No próximo tutorial, você aprenderá como realizar operações úteis em conjuntos como:
Resumo
- Um conjunto é uma coleção não ordenada de elementos imutáveis .