22. Conjuntos (set)
Conjuntos, set em Python, são uma estrutura de dados que implementam operações de união, intersecção e diferença, entre outras. A principal característica dessa estrutura de dados é não admitir repetição de elementos, como os conjuntos da matemática. Outra característica importante é que conjuntos não mantêm a ordem de seus elementos. Vejamos algumas operações com conjuntos.
»> a = set()
»> a.add(l)
»> a.add(2)
»> a.add(3)
>» a
{1, 2, 3}
>» a.add(l)
»> a
{1, 2, 3}
No exemplo, veja que, ao adicionarmos 1 pela segunda vez, nada alteramos no conjunto em si, uma vez que 1 já fazia parte deste. A ordem relativa que vemos no exemplo é mera coincidência.
»> a.add(O)
»> a.add(-l)
{0, 1, 2, 3, -1}
Podemos testar se um elemento faz parte de um conjunto usando o operador in do Python:
»> 1 in a
True
»> -2 in a
False
Um set(conjunto) pode ser criado a partir de listas, tuplas e qualquer outra estrutura de dados que seja enumerável.
»> b = set([2, 3])
»> b
{2, 3}
Entre as operações disponíveis com conjuntos, temos a diferença entre conjuntos, que utiliza o operador
»> a = {0, 1, 2, 3, -1}
»> b = {2, 3}
>» a – b
{0, 1, -1}
O resultado contém apenas os elementos de a que não estão presentes em b.
A união é realizada pelo operador |:
»> a = {0, 1, 2, 3, -1}
»> b = {2, 3}
»> c = set([4, 5, 6])
»> a | b
{0, 1, 2, 3, -1}
»> a | c
{0, 1, 2, 3, 4, 5, 6, -1}
Conjuntos (set) também possuem outras propriedades, como tamanho (número de elementos), que podem ser obtidas com o uso da função len:
»> len(a)
5
»> len(c)
3
Exercício 6.19 Escreva um programa que compare duas listas. Utilizando operações com conjuntos, imprima:
- os valores comuns às duas listas
- os valores que só existem na primeira
- os valores que existem apenas na segunda
- uma lista com os elementos não repetidos das duas listas.
- a primeira lista sem os elementos repetidos na segunda
Exercício 6.20 Escreva um programa que compare duas listas. Considere a primeira lista como a versão inicial e a segunda como a versão após alterações. Utilizando operações com conjuntos, seu programa deverá imprimir a lista de modificações entre essas duas versões, listando:
- os elementos que não mudaram
- os novos elementos
- os elementos que foram removidos