Lesson 10
Conjuntos
1. O que é um conjunto
Definido em Python é uma estrutura de dados equivalente a conjuntos em matemática. Pode consistir em vários elementos; a ordem dos elementos em um conjunto é indefinida. Você pode adicionar e excluir elementos de um conjunto, você pode iterar os elementos do conjunto, você pode realizar operações padrão em conjuntos (união, intersecção, diferença). Além disso, você pode verificar se um elemento pertence a um conjunto.
Ao contrário das matrizes, onde os elementos são armazenados como lista ordenada, a ordem dos elementos em um conjunto é indefinida (além disso, os elementos do conjunto geralmente não são armazenados em ordem de aparição no conjunto; isso permite verificar se um elemento pertence a um conjunto mais rápido do que apenas passando por todos os elementos do conjunto).
Qualquer tipo de dado imutável pode ser um elemento de um conjunto: um número, uma string, uma tupla. Tipos de dados mutáveis (variáveis) não podem ser elementos do conjunto. Em particular, list não pode ser um elemento de um conjunto (mas tuple pode), e outro conjunto não pode ser um elemento de um conjunto. A exigência de imutabilidade decorre da maneira como os computadores representam conjuntos na memória.
2. Como definir um conjunto
Você pode definir um conjunto tão simples quanto nomeando todos os seus elementos entre colchetes. A única exceção é o conjunto vazio , que pode ser criado usando a função set()
. Se set(..)
tiver uma lista, uma string ou uma tupla como parâmetro, retornará um conjunto composto por seus elementos. Por exemplo,
A = {1, 2, 3} A = set('qwerty') print(A)
irá imprimir {'e', 'q', 'r', 't', 'w', 'y'}
como saída.
A ordem dos elementos não é importante. Por exemplo, o programa
A = {1, 2, 3} B = {3, 2, 3, 1} print(A == B)
irá imprimir True
, porque A
e B
são conjuntos iguais.
Cada elemento pode entrar no conjunto apenas uma vez. set('Hello')
retorna o conjunto de quatro elementos: {'H', 'e', 'l', 'o'}
.
3. Operações com elementos
Você pode obter o número de elementos no conjunto usando a função len
.
Você também pode iterar todos os elementos do conjunto (em uma ordem indefinida!) Usando o loop for
:
primes = {2, 3, 5, 7, 11} for num in primes: print(num)
Você pode verificar se um elemento pertence a um conjunto usando a palavra-chave in
: expressões como a in A
retornar um valor do tipo bool
. Da mesma forma, há a operação oposta not in
. Para adicionar um elemento ao conjunto, há o método add
:
A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4)
Existem dois métodos para remover um elemento de um conjunto: discard
e remove
. Seu comportamento varia apenas no caso, se o item excluído não estava no conjunto. Neste caso o discard
do método não faz nada e o método remove
lança o KeyError
exceção.
Finalmente, o pop
remove um elemento aleatório do conjunto e retorna seu valor. Se o conjunto estiver vazio, pop
gera a exceção KeyError
.
Você pode transformar um conjunto em lista usando a list
funções.
4. Operações em conjuntos
É assim que você executa as operações conhecidas em conjuntos no Python:
A | B A.union (B) | Retorna um conjunto que é a união dos conjuntos A e B |
A | = B A.update (B) | Adiciona todos os elementos da matriz B ao conjunto A |
A e B A.intersection (B) | Retorna um conjunto que é a interseção dos conjuntos A e B |
A & = B A.intersection_update (B) | Deixa no conjunto A apenas os itens que pertencem ao conjunto B |
A - B Diferença (B) | Retorna a diferença definida de A e B (os elementos incluídos em A , mas não incluídos em B ). |
A - = B A.difference_update (B) | Remove todos os elementos de B a partir do conjunto A . |
A ^ B A. diferença simétrica (B) | Retorna a diferença simétrica dos conjuntos A e B (os elementos pertencentes a A ou B , mas não a ambos os conjuntos simultaneamente). |
A ^ = B A.symmetric_difference_update (B) | Escreve em A a diferença simétrica dos conjuntos A e B |
A <= B A. subconjunto (B) | Retorna true se A é um subconjunto de B |
A> = B A.issuperset (B) | Retorna true se B é um subconjunto de A |
A <B | Equivalente a A <= B and A != B |
A> B | Equivalente a A >= B and A != B |