English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá tudo sobre conjuntos em Python; como criá-los, adicionar ou remover elementos dentro deles e todas as operações que podem ser executadas em conjuntos no Python.
Os conjuntos são conjuntos não ordenados de itens. Cada elemento é único (sem itens repetidos) e deve ser imutável (não pode ser alterado).
Mas, o próprio conjunto é mutável. Podemos adicionar ou remover itens nele.
Os conjuntos podem ser usados para executar operações matemáticas de conjuntos, como união, interseção, diferença simétrica, etc.
Ao colocar todos os itens (elementos) entre chaves {} e separá-los por vírgula ou usar funções integradas para criar conjuntos set().
pode ter qualquer número de itens e eles podem ter tipos diferentes (inteiros, números de ponto flutuante, tuplas, strings, etc.). No entanto, o conjunto não pode ter itens mutáveis (por exemplolista,conjunto oudicionário) como seus elementos.
# Conjunto de inteiros my_set = {1, 2, 3} print(my_set) # Conjunto de tipos de dados mistos my_set = {1.0, "Hello", (1, 2, 3)} print(my_set)
tente também o seguinte exemplo.
# Conjunto sem repetições # Saída: {1, 2, 3, 4} my_set = {1,2,3,4,3,2} print(my_set) # O set não pode conter itens mutáveis # Aqui [3,4] é uma lista mutável # Se descomentar a linha12linha, # Isso causará um erro. # TypeError: unhashable type: 'list' #my_set = {1, 2, [3, 4])} # Podemos gerar um conjunto a partir de uma lista # Saída: {1, 2, 3} my_set = set([1,2,3,2]) print(my_set)
Criar um conjunto vazio é um pouco especial.
Os parênteses vazios {} criarão um dicionário vazio no Python. Para criar um conjunto vazio sem elementos, usamos a função set() sem parâmetros.
# Inicializar usando {} a = {} # Verificar o tipo de dados de a # Output: <class 'dict'> print(type(a)) # Inicializar usando set() a = set() # Verificar o tipo de dados de a # Output: <class 'set'> print(type(a))
O conjunto é mutável. Mas como são desordenados, os índices não têm significado.
Não podemos usar índices ou fatiamento para acessar ou alterar elementos do conjunto. O conjunto não suporta isso.
Podemos usar o método add() para adicionar um único elemento, e o método update() para adicionar múltiplos elementos. O método update() pode aceitartupla,lista,stringou outro conjunto como parâmetro. Em todos os casos, evite repetições.
# Inicializar my_set my_set = {1,3} print(my_set) # Se descomentar a linha9linha, # Você receberá um erro # TypeError: 'set' object does not support indexing #my_set[0] # Adicionar um elemento # Saída: {1, 2, 3} my_set.add(2) print(my_set) # Adicionar múltiplos elementos # Saída: {1, 2, 3, 4} my_set.update([2,3,4]) print(my_set) # Adicionar list e set # Saída: {1, 2, 3, 4, 5, 6, 8} my_set.update([4,5], {1,6,8) print(my_set)
Quando você executar o programa, a saída será:
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Você pode usar os métodos discard() e remove() para remover itens específicos do conjunto.
A única diferença entre eles é que, se usar discard(), e o item não existir no conjunto, ele permanece inalterado. Mas remove() levanta um erro nessa situação.
O exemplo a seguir vai explicar isso.
# Inicializar my_set my_set = {1, 3, 4, 5, 6} print(my_set) # Discard one element # Saída: {1, 3, 5, 6} my_set.discard(4) print(my_set) # Remover um elemento # Saída: {1, 3, 5} my_set.remove(6) print(my_set) # Discard one element # The element is not in my_set # Saída: {1, 3, 5} my_set.discard(2) print(my_set) # remove one element # The element is not in my_set # If there is no comment #my_set.remove(2), # An error will be raised. # Output: KeyError: 2 #my_set.remove(2)
Similarly, we can use the pop() method to delete and return an item.
Sets are unordered and cannot determine which item will be popped. This is completely arbitrary.
We can also use the clear() method to delete all items from the set.
# Inicializar my_set # Output: Unique element set my_set = set("HelloWorld") print(my_set) # pop one element # Output: Random element print(my_set.pop()) # pop any element # Output: Random element my_set.pop() print(my_set) # Clear my_set # Output: set() my_set.clear() print(my_set)
Sets can be used to perform mathematical set operations, such as union, intersection, difference, and symmetric difference. We can achieve this through operators or methods...
Let's consider the following two groups used for the following operations.
>>> A = {1, 2, 3, 4, 5} >>> B = {4, 5, 6, 7, 8}
The union of A and B is a set of all elements from both sets.
The union is executed using the | operator. It can also be completed using the union() method.
# 初始化 A 和 B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Use | operator # Saída: {1, 2, 3, 4, 5, 6, 7, 8} print(A | B)
Tente os seguintes exemplos no shell do Python.
# Use union function >>> A.union(B) {1, 2, 3, 4, 5, 6, 7, 8} # Use the union function on B >>> B.union(A) {1, 2, 3, 4, 5, 6, 7, 8}
>>> BandB'sThe intersection is a set of elements common to both sets.
The intersection is executed using the & operator. The intersection() method can complete the same operation.
# 初始化 A 和 B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Use the & operator # Output: {4, 5} print(A & B)
Tente os seguintes exemplos no shell do Python.
# Use the intersection function on A >>> A.intersection(B) {4, 5} # Use the intersection function on B >>> B.intersection(A) {4, 5}
The difference between A and B (A-B) is a set of elements only in A but not in B. Similarly, B-A is a set of elements in B but not in A.
Difference is used -The operator executes. The difference() method can complete the same operation.
# 初始化 A 和 B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Use the operator on A - operator # Output: {1, 2, 3} print(A - B)
Tente os seguintes exemplos no shell do Python.
# Use the difference function on A >>> A.difference(B) {1, 2, 3} # No B-O operador ^ realiza a diferença simétrica. Você pode completar a mesma operação usando o método symmetric_difference(). >>> - >>> B {8, 6, 7} A # Usando a função de diferença no B {8, 6, 7}
Diferença simétrica de conjunto
A diferença simétrica entre A e B é um conjunto de elementos que estão em A e B, mas não nos dois.
# 初始化 A 和 B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # Usando o operador ^ # Saída: {1, 2, 3, 6, 7, 8} print(A ^ B)
Tente os seguintes exemplos no shell do Python.
# Usando a função symmetric_difference no A >>> A.symmetric_difference(B) {1, 2, 3, 6, 7, 8} # Usando a função symmetric_difference no B >>> B.symmetric_difference(A) {1, 2, 3, 6, 7, 8}
Existem muitos métodos de conjunto no Python, alguns dos quais já foram usados. Esta é uma lista de todos os métodos disponíveis para o objeto set.
Método | Descrição |
---|---|
add() | Adiciona um elemento à coleção |
clear() | Remove todos os elementos da coleção |
copy() | Retorna uma cópia da coleção |
difference() | Retorna a diferença de duas ou mais coleções como um novo conjunto |
difference_update() | Remove todos os elementos da outra coleção da coleção |
discard() | Se o elemento for membro, remove-o da coleção. (Se o elemento não estiver na coleção, não executa nenhuma operação) |
intersection() | Retorna a interseção de duas coleções como um novo conjunto |
intersection_update() | Atualiza a coleção com a interseção de si mesma e de outro |
isdisjoint() | True se o ponto de interseção de duas coleções estiver vazio, então retorna |
issubset() | Retorna True se outra coleção contiver esta coleção |
issuperset() | Retorna True se esta coleção contiver outra coleção |
pop() | Remove e retorna um elemento arbitrário do conjunto. Eleva KeyError, se o conjunto estiver vazio |
remove() | Remove um elemento da coleção. Se o elemento não for membro, lança um KeyError |
symmetric_difference() | Retorna a diferença simétrica de duas coleções como um novo conjunto |
symmetric_difference_update() | Atualiza uma coleção com a diferença simétrica de si mesma e de outro |
union() | Retorna a união da coleção no novo conjunto |
update() | Atualiza a coleção com a união de si mesma e outros elementos |
Podemos usar a palavra-chave in para testar se um item existe no conjunto.
# Inicializar my_set my_set = set("apple") # Verificar se "a" existe # Saída: True print('a' in my_set) # Verificar se "p" existe # Saída: False print('p' not in my_set)
Usando um loop for, podemos percorrer cada item do conjunto.
>>> for letter in set("apple"): ... print(letter) ... a p e l
Funções integradas como all(), any(), enumerate(), len(), max(), min(), sort(), sum() são usadas frequentemente com set para executar diferentes tarefas.
Função | Descrição |
---|---|
all() | Se todos os elementos do conjunto forem true (ou o conjunto estiver vazio), retorna True. |
any() | Se qualquer elemento do conjunto for true, retorna True. Se o conjunto estiver vazio, retorna False. |
enumerate() | Retorna um objeto enumerate. Contém pares de índice e valor de todos os itens. |
len() | Retorna o comprimento do conjunto (número de itens). |
max() | Retorna o item maior do conjunto. |
min() | Retorna o item mais pequeno do conjunto. |
sorted() | Retorna uma nova lista ordenada dos elementos do conjunto (não ordena o conjunto em si). |
sum() | Retorna a soma de todos os elementos do conjunto. |
O Frozenset é uma nova classe com características de conjunto, mas seus elementos não podem ser alterados após a atribuição. Tuples são listas imutáveis, enquanto os frozensets são conjuntos imutáveis.
Os conjuntos mutáveis não são hasháveis, portanto, não podem ser usados como chaves de dicionário. Por outro lado, o frozenset é hashável e pode ser usado como chave de dicionário.
Pode-se usar a funçãoFrozenset()CriaçãoFrozensets.
Este tipo de dados suporta métodos como copy(), difference(), intersection(), isdisjoint(), issubset(), issuperset(), symmetric_difference() e union(). Devido à imutabilidade, não há métodos para adicionar ou remover elementos.
# 初始化 A 和 B A = frozenset([1, 2, 3, 4]) B = frozenset([3, 4, 5, 6])
Tente esses exemplos no shell do Python.
>>> A.isdisjoint(B) False >>> A.difference(B) frozenset({1, 2) >>> A | B frozenset({1, 2, 3, 4, 5, 6) >>> A.add(3) ... AttributeError: objeto 'frozenset' não tem atributo 'add'