Aula 07 – Python – Set, Frozenset e Range
Aula 07 – Python – Set, Frozenset e Range
Aulas baseadas no livro Python para Desenvolvedores de Luiz Eduardo Borges.
COMO UTILIZAR SET, FROZENSET E RANGE EM PYTHON
Que fazer esse curso com certificação?
Acesse:
https://workover.com.br/python-codigo-fluente
Voltar para página principal do blog
Todas as aulas desse curso
Aula 06 Aula 08
Automatize tarefas do dia a dia com python:
SET, FROZENSET E RANGE
- SET é uma sequência mutável sem repetições não ordenada
- FROZENSET é uma sequência imutável sem repetições não ordenada
IMPLEMENTAM OPERAÇÕES DE CONJUNTOS
- União
- Interseção
- Diferença
RANGE
A função range() permite-nos especificar o início da sequência, o passo, e o valor final
O único parâmetro obrigatório é o que define quem será o último elemento da sequência
- start – início da sequência
- stop – último elemento da sequência
- step – intervalo entre os elementos
Na notação range( stop ), assume-se que o início da sequência é igual a zero e o final igual ao valor que está sendo enviado como argumento
Na notação range( [start], stop[, step] ) podemos definir o início da sequência o último elemento e o passo, isto é, o intervalo entre cada elemento.
# -*- coding: latin1 -*-
# Conjuntos de dados
s1 = set(range(5))
s2 = set(range(2, 6))
s3 = set(range(2, 10, 2))
s4 = set(range(0, -10, -1))
# Exibe os dados
print ('s1:', s1, '\ns2:', s2, '\ns3:', s3)
# União
s1s2 = s1.union(s2)
print ('União de s1 e s2: ', s1s2)
# Diferença
print ('Diferença de s1s2 com s3:', s1s2.difference(s3))
# Interseção
print ('Interseção de s1s2 com s3:', s1s2.intersection(s3))
# Testa se um set inclui outro
if s1.issuperset([1, 2]):
print ('s1 inclui 1 e 2')
# Testa se não existe elementos em comum
if s1.isdisjoint(s2):
print ('s1 e s2 não tem elementos em comum')
OBS. Quando uma lista é convertida para set, as repetições são descartadas.
lst = [1, 3, 3, 6, 4, 4]
lst
[1, 3, 3, 6, 4, 4]
set(lst)
{1, 3, 4, 6}
s = set(range(8, 0, -2))
s
{8, 2, 4, 6}
l = list(range(8, 0, -2))
l
[8, 6, 4, 2]
list(s)[1]
2
s.add(5)
{2, 4, 5, 6, 8}
fz = frozenset(range(3))
fz
frozenset({0, 1, 2})
list(fz)[1]
1
FROZENSET É IGUAL AO SET, A DIFERENÇA É QUE O FROZENSET É IMUTÁVEL E NÃO HÁ MÉTODOS DISPONÍVEIS PARA ALTERAR SEUS ELEMENTOS.
Existe um tipo builtin, ou seja, um tipo nativo do python, que é uma lista chamada bytearray.
A classe bytearray é uma sequência mutável de inteiros no intervalo 0 <= x <256.
Ela possui a maioria dos métodos usuais de sequências mutáveis, assim como a maioria dos métodos que o tipo bytes possui.
bytearray é muito semelhante a uma string regular em python, mas com uma diferença importante, enquanto strings são imutáveis, bytearrays são mutáveis, parecido com uma lista de caracteres simples, ou seja, uma string.
É útil porque alguns aplicativos usam sequências de bytes que executam mal com strings imutáveis.
Quando você está fazendo muitas alterações pequenas no meio de grandes blocos de memória, como em um mecanismo de banco de dados ou biblioteca de imagens, as sequências de caracteres têm um desempenho muito ruim, pois tem que ser feita uma cópia da string inteira (possivelmente grande).
bytearrays tem a vantagem de tornar possível fazer esse tipo de mudança sem primeiro fazer uma cópia da memória antes.
Esse caso em particular é mais a exceção do que a regra.
A maioria dos usos envolve comparação de strings ou formatação de strings.