Conjuntos
Em matemática, existe um conjunto (ou teoria dos conjuntos). Talvez você até os tenha estudado em um curso de matemática. Você pode até estar familiarizado com os diagramas de Venn.
Na prática, um conjunto pode ser pensado simplesmente como um conjunto bem definido de objetos individuais, chamados de elementos ou membros.
Agrupar objetos em um conjunto pode ser útil na programação, e o Python nos fornece o tipo integrado set .
Conjuntos (tipo set ) diferem de outros tipos de objetos nas operações únicas que podem ser executadas neles.
O tipo embutido set em Python tem as seguintes características:
Os - elementos de um conjunto não são ordenados (o que significa que dois conjuntos são equivalentes se contiverem os mesmos elementos). Os elementos do conjunto são armazenados não sequencialmente, mas de acordo com certos algoritmos que permitem determinar rapidamente se um elemento pertence a um conjunto (sem enumeração de todos os elementos);
- os elementos do conjunto são únicos. Elementos duplicados não são permitidos;
- conjuntos são mutáveis (por exemplo, você pode adicionar um elemento a um conjunto), mas os próprios elementos dentro do conjunto devem ser imutáveis (números, strings, tuplas). Você não pode fazer de uma lista ou outro conjunto um elemento de um conjunto;
Criar definir
1 via
Simplesmente enumere entre chaves os elementos do conjunto.
x = {"escola", "professor", "turma", aluno}
2 vias
Use a função integrada set() .
x = set() # conjunto vazio
nome_lista = ["Andry", "Bob", "Caroline"]
y = set(nome_da_lista) # você pode criar vários
# de qualquer objeto iterável
z = set(["Andry", "Bob", "Caroline"]) # {'Bob', 'Caroline', 'Andry'}
k = set(("Andry", "Bob", "Caroline")) # {'Bob', 'Caroline', 'Andry'}
s = "string s"
m = conjunto(s) # {'i', 't', 'g', 'r', 'n', & #39;s', ' '} -
# Preste atenção!
# a ordem dos elementos pode ser qualquer,
# elementos não são repetidos
n = {42, 'foo', 3,14159, Nenhum, (1, 2, 3)} # elementos em
# podem ser de diferentes tipos
Definir saída
Os elementos do conjunto são exibidos em uma ordem arbitrária, não necessariamente na ordem em que são adicionados.
z = set(["Andry", "Bob", "Caroline"])
imprimir(z) # {'Bob', 'Caroline', 'Andry'}
imprimir(*z) # Bob Andry Caroline
|
Métodos para trabalhar com conjuntos
Número de elementos no conjunto
O método len() retorna o número de elementos no conjunto.
k = {42, 'foo', 3,14159, Nenhum, (1, 2, 3)}
print(len(k)) #5
Determinando se um elemento está em um conjunto (associação em)
k = {42, 'foo', 3,14159, Nenhum, (1, 2, 3)}
print(42 em k) # Verdadeiro
print(2 em k) # Falso
Embora os elementos contidos em um conjunto devam ser de tipo imutável, os próprios conjuntos podem ser alterados.
Adicionando um elemento ao set
x.add(<elem>)
ao conjunto x adiciona <elem> que deve ser o único objeto imutável.
Remover um elemento de um conjunto
1) x.remove(<elem>)
<elem> foi removido do conjunto x . Python lança uma exceção (erro) se <elem> não estiver em x .
2) x.discard(<elem>)
o mesmo exclui, mas em caso de ausência de um elemento no conjunto, não gera exceção.
3) x.pop()
remove e retorna um elemento aleatório do conjunto. Se o conjunto estiver inicialmente vazio, ocorre uma exceção (erro).
4) x.clear()
remove todos os elementos do conjunto (limpa o conjunto).
|
|
Definir classificação?
Como sabemos, a ordem dos elementos no conjunto não é levada em consideração. Então, faz sentido falar sobre ordenação de conjuntos em Python 3?! (É por isso que há um ponto de interrogação no título)
Para encontrar rapidamente um elemento em um conjunto, é desejável armazená-los na memória de forma ordenada.
Vejamos alguns exemplos. O que acontece com elementos de diferentes tipos de dados no mesmo conjunto? Esses elementos não devem ser classificados. Se imprimirmos elementos usando o comando print() , eles serão exibidos assim:
a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'}
print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'}
Nesse caso, valores não classificados são exibidos. Se você repetir o lançamento, a ordem de saída pode ser diferente. Mas isso é apenas se elementos de tipos diferentes forem misturados.
Vamos tentar exibir dados de um tipo (por exemplo, apenas números):
a = {0, 1, 12, 3, 2}
print(a) # {0, 1, 2, 3, 12}
Todos os elementos são exibidos em ordem. Vamos tentar convertê-lo em uma lista:
a = {0, 1, 12, 3, 2}
b = lista(a)
print(b) # [0, 1, 2, 3, 12]
Da mesma forma, os elementos classificados em ordem crescente foram gravados na lista.
Acontece que os elementos são armazenados na memória de forma ordenada se forem do mesmo tipo. Mas é melhor não contar com isso, os algoritmos do Python podem mudar.
Se você precisa obter uma lista ordenada de um conjunto, é melhor usar sort (< code>sorted) função para ter certeza ). Os elementos serão classificados exatamente. Seu código será compreensível para outras pessoas.
|