2.18. Conjuntos

A linguagem Python fornece um tipo chamado set que permite construir conjuntos, isto é, coleções não ordenadas e sem elementos duplicados. Trata-se de uma estrutura adequada para operações sobre conjuntos: união, intersecção, diferença, e diferença simétrica.

Um conjunto pode ser criado utilizando um par de chaves ({ e }), com os elementos separados por vírgula:

>>> mg = { "Mariana", "Ouro Preto", "Ouro Branco" }

>>> rn = { "Ouro Branco", "Acari", "Caicó", "Cruzeta" }

Para saber as cidades com mesmo nome nos dois conjuntos, utilizamos o operador & (intersecção):

>>> mg & rn
{'Ouro Branco'}

Para saber os nomes de cidades que são exclusivos de MG, utilizamos o operador - (diferença):

>>> mg - rn
{'Mariana', 'Ouro Preto'}

A união dos dois conjuntos pode ser obtida com o operador |:

>>> mg | rn
{'Ouro Branco', 'Mariana', 'Cruzeta', 'Ouro Preto', 'Caicó', 'Acari'}

Para saber os nomes de cidades exclusivos de MG e RN, podemos utilizar o operador de diferença simétrica ^:

>>> mg ^ rn
{'Cruzeta', 'Ouro Preto', 'Caicó', 'Acari', 'Mariana'}

Para testar se um elemento encontra-se no conjunto, podemos utilizar o operador in:

>>> "Ouro Preto" in mg
True

Também podemos verificar se um dado elemento não pertence ao conjunto, através do operador not in:

>>> "Perdizes" not in mg
True

Para saber se dois conjuntos são disjuntos:

>>> mg.isdisjoint(rn)
False

Nota

Como o par de chaves ({ e }) também é usado para criação de dicionários, somente pode ser criado um conjunto vazio usando o construtor set:

>>> set()
set()

Repare que a representação textual do conjunto vazio também é especial, formada pelo texto: set().

Nota

O tipo set é muito utilizado para eliminação de duplicatas de uma sequência, além das operações de conjunto.

Nota

Existem dois tipos básicos de conjunto em Python: set e frozenset. O primeiro, é mutável, enquanto o último, imutável.

2.18.1. Set Comprehension

Exemplo:

>>> xs = [ 1, 2, 3, 4, 5 ]

>>> ys = { (1.5 * x - 3) for x in xs }

>>> type(ys)
<class 'set'>

>>> print(ys)
{0.0, 1.5, 3.0, 4.5, -1.5}

Nota

Para mais detalhes sobre a estrutura set, consulte [29] e [30].