Como usar objetos congelados no Python

Como usar objetos congelados no Python

Este artigo abordará um guia sobre o uso da função "Frozenset" no Python que retorna um novo objeto Python tipo Frozenset. Esses objetos são semelhantes a definir objetos disponíveis no Python com algumas diferenças importantes. Todas as amostras de código deste artigo são testadas com Python 3.9.5 no Ubuntu 21.04.

Sobre congelamentos

O Função congelada pega um argumento de um objeto Python do tipo iterável e retorna um novo objeto Python tipo Frozenset. Um objeto do tipo Frozenset é um objeto Hashable e imutável de Python cujos elementos são congelados ou imutáveis ​​ao longo de sua vida. Em contraste com um objeto python do tipo definido cujos elementos podem ser alterados a qualquer momento, todos os itens em um congelamento permanecem constantes. O uso de congelamentos pode ser melhor compreendido através de exemplos. Alguns deles são explicados abaixo.

Criando um novo objeto Frozenset

Para conseguir um novo Objeto do tipo congelamento, Basta fornecer qualquer tipo iterável como argumento opcional para a função Frozenset. Aqui está uma amostra de código:

l = [1, 2, 3, 4]
fset = Frozenset (L)
Imprimir (fset)
Imprimir (tipo (fset))

A primeira declaração no código define uma nova lista que é simplesmente chamada de "L". Em seguida, um novo Frozenset O objeto é criado chamando a função Frozenset e fornecendo a lista como um argumento. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

Frozenset (1, 2, 3, 4)

Como você pode ver na saída, o fset é um Frozenset Digite objeto e usa a sintaxe do aparelho encaracolado usado por conjuntos também no python. Frozenset conter itens exclusivos apenas como duplicatas não são permitidas, novamente muito parecido com os objetos do tipo Python Set. Todo Frozenset O objeto de tipo é um conjunto de python, mas vice -versa não é verdadeiro, pois os itens definidos podem ser alterados chamando alguns métodos. Observe que você pode criar um vazio Frozenset ligando para o Frozenset função sem nenhum argumento.

Você não pode modificar um congelamento uma vez criado

Como afirmado anteriormente, um Frozenset O objeto de tipo tem itens que não mudam durante a vida. Enquanto você pode usar métodos disponíveis para conjuntos de python com objetos do tipo Frozenset, um erro é lançado se você tentar usar um método que altere o original Frozenset objeto em si. Aqui está um exemplo:

l = [1, 2, 3, 4]
new_set = set (l)
novo conjunto.Remover (1)
Imprimir (new_set)
fset = Frozenset (L)
fset.Remover (1)

Na amostra de código acima, há duas declarações em que “remover”Método de objetos de tipo de conjunto é chamado. Enquanto um item é removido com sucesso de “novo conjunto“, Um erro é lançado quando o método de remoção é chamado em“fset““. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

2, 3, 4
Traceback (chamada mais recente):
Arquivo "Main.py ", linha 9, em
fset.Remover (1)
AttributeError: o objeto 'Frozenset' não tem atributo 'Remover'

Outros métodos semelhantes como "Add", "Pop", "Clear", "Dispard" e assim por diante não funcionam com o Forzensets.

Métodos que funcionam com Frozensets

Todos os métodos de conjunto de python que não modificam itens de um conjunto de trabalhos com Frozenset Digite objetos. Assim, você pode comparar dois congênitos para igualdade ou desigualdades, iterar / percorrer os elementos comuns ou únicos entre dois congênitos e assim por diante. Abaixo está um exemplo mostrando alguns dos métodos que funcionam com congelamentos.

fSet1 = Frozenset ([1, 2, 3, 4])
fSet2 = Frozenset ([3, 4, 5, 6])
Imprimir (fset1.interseção (fset2))
Imprimir (fset1.união (fset2))
Imprimir (fset1.diferença (fset2))
Imprimir (Len (fset1))
Imprimir (Len (fSET2))

O código é auto -explicativo. Alguns métodos que não mudam valores do original Frozenset foram chamados. Esses métodos foram usados ​​principalmente para comparar elementos de dois diferentes Frozenset. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

Frozenset (3, 4)
Frozenset (1, 2, 3, 4, 5, 6)
Frozenset (1, 2)
4
4

Alguns dos outros métodos que funcionam com conjuntos congelados são: "ISSUBSET", "ISSUPERSET", "Symmetric_Difference", "Copy" e assim por diante. Operadores de igualdade como ">", "=" e "<=” also work with frozenset type objects.

Frozensets podem ser convertidos para outros tipos iteráveis

Você pode converter Frozenset Digite objetos para outros iteráveis ​​chamando seu construtor principal. O exemplo de código abaixo mostra a conversão de Frozenset Digite objetos para listar, tupla e definir objetos de tipo.

fset = Frozenset ([1, 2, 3, 4])
IMPRESSÃO (LIST (FSET))
Imprimir (tupla (fset))
IMPRIMENTO (SET (FSET))

Depois de executar a amostra de código acima, você deve obter a seguinte saída:

[1, 2, 3, 4]
(1, 2, 3, 4)
1, 2, 3, 4

Casos de uso congelados

Como Frozenset Objetos não passam de objetos python do tipo conjunto imutável / imutável, você pode se perguntar sobre a utilidade deles, pois os conjuntos sempre podem ser usados ​​em seu lugar. O caso de uso mais óbvio de Frozenset é para declarar objetos de tipo de conjunto com elementos exclusivos sem o risco de alterá -los acidentalmente mais tarde no código. Frozenset Os objetos de tipo podem ser usados ​​como teclas de dicionário, enquanto os conjuntos não podem ser usados ​​para o mesmo propósito. Como os congelamentos são hashable, eles podem ser usados ​​em conjuntos, enquanto os conjuntos não podem ser inseridos em outro conjunto. Dê uma olhada no código abaixo:

fset = Frozenset (4, 5)
s = 1, 2, fset
Impressão (s)
s = 1, 2, 4, 5

Na segunda declaração, um Frozenset foi adicionado a um conjunto durante a criação. Na última declaração, um objeto de tipo definido é usado dentro de outro conjunto. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

Frozenset (4, 5), 1, 2
Traceback (chamada mais recente):
Arquivo "Main.py ", linha 27, em
s = 1, 2, 4, 5
TypeError: Tipo não lavável: 'Conjunto'

Como você pode ver na saída, forzensets pode ser adicionado a outros conjuntos. Por outro lado, adicionar um conjunto a outro conjunto lança um erro, pois os conjuntos aceitam apenas itens do tipo hashable.

Conclusão

Frozenset Forneça uma maneira de criar conjuntos imutáveis. Eles aceitam apenas elementos únicos e são objetos do tipo hashable para que possam ser usados ​​em outros objetos Python que apenas aceitam objetos hashables como seus filhos.