Conjuntos do Python

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:

Resumo

  • Um conjunto é uma coleção não ordenada de elementos imutáveis.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *