100% acharam este documento útil (1 voto)
92 visualizações13 páginas

Coleções Conjunto em Python: Aprendizado

O documento discute coleções do tipo conjunto em Python. Ele introduz conjuntos, apresenta exemplos de união, interseção e diferença entre conjuntos usando a coleção do tipo set em Python, e compara aplicações com e sem o uso de conjuntos.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
100% acharam este documento útil (1 voto)
92 visualizações13 páginas

Coleções Conjunto em Python: Aprendizado

O documento discute coleções do tipo conjunto em Python. Ele introduz conjuntos, apresenta exemplos de união, interseção e diferença entre conjuntos usando a coleção do tipo set em Python, e compara aplicações com e sem o uso de conjuntos.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

PROGRAMAÇÃO

BACK END I

Pedro Henrique Chagas Freitas


Coleções conjunto em Pyton
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

„„ Identificar coleções do tipo conjunto (set).


„„ Programar utilizando coleções do tipo conjunto.
„„ Comparar aplicações com e sem o uso de coleções do tipo conjunto.

Introdução
Neste capítulo, você estudará a utilização de coleções do tipo conjunto
(ou set), além de conhecer o desenvolvimento em linguagem Python
pela utilização deste tipo. Por fim, iremos comparar aplicações com e
sem o uso de coleções do tipo conjunto.

Coleções do tipo conjuntos (set) em Python


No passado, as linguagens dinâmicas eram vistas apenas como linguagens de
script, utilizadas para automatizar pequenas tarefas. No entanto, com o passar
do tempo elas cresceram, amadureceram e conquistaram o mercado, a ponto
de chamar a atenção dos grandes fornecedores de tecnologia. Dentre essas
linguagens de script, a grande protagonista foi a linguagem Python. Mas por
que Python é uma linguagem de script?
As linguagens de script são linguagens de programação para a automação
de tarefas por meio de scripts.
Scripts são programas escritos para um ambiente de execução que pode
interpretar e automatizar a execução de tarefas ou instruções que poderiam
ser executadas, uma por vez, por um operador humano.
Já Python é uma linguagem de programação de alto nível, interpretada,
imperativa, multiparadigma, de tipagem forte e dinâmica.
2 Coleções conjunto em Pyton

Dentre as características citadas da linguagem Python, uma em especial será


objeto de nosso estudo: a tipagem forte e dinâmica. Dizemos que a tipagem é
forte quando existem tipos bem definidos, sendo que cada objeto tem um tipo.
Esta tipagem é dinâmica pois uma variável pode mudar de tipo e armazenar
os mais diferentes tipos de objeto (CORREIA, 2016, documento on-line).
Veja o exemplo a seguir.

1: >>> minhaVar = 10
2: >>> type(minhaVar)
3: <class 'int'>
4: >>> outraVar = False
5: >>> type(outraVar)
6: <class 'bool'>
7: >>>
8: >>> teste = minhaVar
9: >>> type(teste)
10: <class 'int'>
11: >>> teste = outraVar
12: >>> type(teste)
13: <class 'bool'>

Na linha 1, criamos uma variável chamada minhaVar, e na linha 2,


verificamos o seu tipo: int (linha 3). Fazemos o mesmo com a variável ou-
traVar, do tipo bool (booleana). Na linha 8, atribuímos o objeto guardado
em minhaVar para a variável teste e, assim, teste passa a ter o mesmo
tipo do objeto atribuído (int). Esse comportamento é o que Python chama
de tipagem forte: os objetos têm tipos e não mudam.
Na linha 11, pegamos a variável teste, que estava armazenando um
objeto inteiro, e atribuímos agora um objeto booleano. Esse comportamento é
o que Python chama de tipagem dinâmica: uma variável pode mudar de tipo.
Esta característica é um dos motivos para a linguagem Python ser tão
difundida em aplicações de pequeno, médio e grande porte. Em suma, pode-
mos utilizar Python para construir qualquer tipo de sistema, desde aplicações
básicas, até às mais complexas.
Sua tipagem forte e dinâmica fez com que a linguagem Python fosse
segmentada em tipos e atributos. Como principal regra em Python, temos
identificadores de variáveis válidos, que podem conter letras (maiúsculas ou
minúsculas), números e _ (underline), no entanto, não podem começar com
um número. O mesmo é válido para funções, classes, módulos, entre outros.
Coleções conjunto em Pyton 3

Veja o exemplo a seguir.

>>> x = 10
>>> v10 = 100
>>> v _ 123 _ _ = "valido"
>>> _ v = True
>>> 10var = "erro" #inválido, começa com número
File "<stdin>", line 1
10var = "erro"

Em Python, não existe palavra-chave para declarar variáveis. Para criar


uma variável, basta atribuir um valor para um identificador válido e aquela
variável é criada. Uma vez criada, podemos usar a instrução del para deletar
a variável. Assim, ela deixa de existir.
Outra característica da linguagem Python é que é possível fazer várias
atribuições de variáveis em uma mesma linha. Nesse caso, basta separar os
identificadores por vírgula do lado esquerdo da atribuição (lado esquerdo do
igual) e manter a mesma ordem no lado direito. Tal função se relaciona com
os chamados tipos nativos.
Os tipos nativos armazenam a categoria coleções com o tipo conjunto
(set), que utiliza o delimitador chaves { }. No Quadro 1, temos os três tipos
que fazem parte da categoria coleções de Python.

Quadro 1. Tipos que fazem parte da categoria coleções do Python

Listas list [] x = []
x = [10, 20]
x = list()

Tupla tuple () x = ()
Coleções x = (10, 20)
x = tuple()

Coleção set {} x = {}
x = {10, 20}
x = set()

Fonte: Adaptado de Built-in... (2019).


4 Coleções conjunto em Pyton

O que são as coleções set? Um set ou conjunto é uma estrutura disponível


como nativa em Python, utilizadas para representar coleções desordenadas
de elementos únicos. As principais características dos conjuntos são:

„„ os elementos não são armazenados em uma ordem específica;


„„ conjuntos não contêm elementos repetidos.

Agora que compreendemos o que são as coleções do tipo conjunto (set),


iremos apresentar exemplos práticos de implementação, utilizando uma co-
leção deste tipo.

Desenvolvimento utilizando coleção do


tipo conjunto
Os conjuntos matemáticos inspiraram as linguagens de script, como a lingua-
gem Python, que empregou em seus tipos nativos a noção de conjunto ou set.
A indexação do código em Python não utiliza a palavra conjunto, mas a
palavra set. Portanto, iremos adotar, a partir de agora, somente a expressão
set para desenvolver a didática do conteúdo.
Vamos simular a criação e a operação com alguns conjuntos, a fim de
desenvolver a implementação do tipo set, começando com o tipo mais básico
de conjunto matemática, a união, ilustrada pela Figura 1.

Figura 1. União.
Fonte: Gouveia (2019, documento on-line).
Coleções conjunto em Pyton 5

A união é a junção de conjuntos, ou seja, é o conjunto formado pelos


elementos de um conjunto somados aos elementos de outros conjuntos. Em
Python, representamos a união por meio da implementação da coleção do tipo
set, como no exemplo a seguir.

1 >>> a = {1, 2, 3, 4}
2 >>> b = {3, 4, 5, 6}
3 >>> print a.union(b)
4 set([1, 2, 3, 4, 5, 6])

Do mesmo modo que realizamos uma união de conjuntos, por meio do tipo
set, podemos, também, realizar uma intersecção, como ilustra a Figura 2.
Uma intersecção ocorre quando segmentamos componentes em comum entre
dois ou mais conjuntos.

Figura 2. Intersecção.
Fonte: Gouveia (2019, documento on-line).

Em Python, representamos a intersecção por meio da implementação da


coleção do tipo set, como no exemplo a seguir.

1 >>> print a.intersection(b)


2 set([3, 4])

Por fim, na diferença entre dois conjuntos A e B, ilustrada pela Figura 3,


podemos apresentar os valores referentes a um conjunto específico e sua
respectiva implementação, por meio da coleção do tipo set em Python.
6 Coleções conjunto em Pyton

Figura 3. Diferença entre dois con-


juntos A e B.
Fonte: Gouveia (2019, documento on-line).

1 >>> a = {1, 2, 3, 4}
2 >>> b = {3, 4, 5, 6}
3 >>> print a.difference(b)
4 set([1, 2])
5 >>> print b.difference(a)
6 set([5, 6])

Aplicações com e sem o uso de coleções


do tipo conjunto
Conforme visto anteriormente, não temos somente o tipo conjunto dentro
das coleções em Python. Também temos listas e tuplas, com suas respectivas
indexações:

lista = []
tupla = ()

As implementações de listas usando colchetes [] e tuplas usando parênteses


() seguem o mesmo princípio de conjuntos, mudando apenas a forma lógica
de utilizá-las, pois tratam-se de ordenações de conjuntos.
A Figura 4 ilustra um exemplo utilizado quando precisamos descobrir
os elementos que duas listas possuem em comum, gerando uma interseção.
Coleções conjunto em Pyton 7

Figura 4. Interseção entre elementos de


duas listas.
Fonte: Interseção (2005, documento on-line).

Podemos representá-la por meio de listas e de conjuntos (set), como


podemos ver a seguir.

1 >>> print a.intersection(b)


2 set([3, 4])
3 >>> l1 = [1, 2, 3]
4 >>> l2 = [2, 4, 3]
5 >>> print set(l1).intersection(l2)
6 set([2, 3])

Note que convertemos l1 em conjunto para utilizarmos o método


intersection. Já com l2 não foi preciso realizar a conversão, pois o set
exige que apenas o primeiro argumento seja um conjunto.
Veja, a seguir, o resultado da interseção implementando uma lista.

1 >>> l3 = list((l1).intersection(l2))
2 >>> print l3
3 [2, 3]

O método intersection não modifica os conjuntos recebidos como


parâmetro. Caso desejássemos que o resultado da interseção fosse armazenado
como novo valor do primeiro conjunto, ao invés de retornar o novo conjunto
como resultado, poderíamos utilizar o método intersection_update,
como mostra o exemplo a seguir.
8 Coleções conjunto em Pyton

1 >>> a.intersection _ update(b)


2 >>> print a
3 [2, 3]

O resultado da implementação com listas ou conjuntos (set) é o mesmo,


pois ambos mostraram a intersecção [2, 3].
Agora, veremos a implementação com tupla (). Tanto a lista quanto a
tupla são estruturas de dados de armazenamento de valores. No caso, a tupla
é uma lista imutável, ou seja, o que diferencia a estrutura lista [] da estrutura
tupla () é o fato de que a lista pode receber elementos novos a qualquer
instante, enquanto a tupla, após definida, não permite a adição ou a remoção
de elementos. Logo, o exemplo anterior caberia à tupla (), sendo a única
diferença que, caso modificássemos os conjuntos, a intersecção criada não
se modificaria. Portanto, não é aconselhável utilizar a tupla () em conjuntos,
a não ser que se tenha certeza de que não ocorrerão mudanças posteriores.
Um exemplo de emprego de tuplas em Python é a designação de datas,
já que estas não mudam: a data de hoje será sempre a data de hoje, a data de
amanhã será sempre a data de amanhã, e assim sucessivamente.
Veja o exemplo a seguir.

1 >>> t = hoje
2 >>> t = ("01", "Terça-Feira", "Outubro", "2019")

Observe que a data de hoje (p. ex., 05/11/2019) será sempre a data de hoje,
amanhã será outro dia, mas o registro do dia de hoje será sempre esta data.
A partir deste exemplo, vamos declarar os dias da semana com tuplas e com
conjuntos (set), supondo que estes começam no dia 01, e assim sucessivamente.
Veja o exemplo a seguir, por meio de tuplas.

01 >>> print dias da semana com tuplas


02 >>> dias _ da _ semana = ("segunda", "terça", "quarta",
"quinta", "sexta", "sábado", "domingo")
03 >>> segunda = 1
04 >>> terça = 2
05 >>> quarta = 3
06 >>> quinta = 4
07 >>> sexta = 5
08 >>> sábado = 6
09 >>> domingo = 7
Coleções conjunto em Pyton 9

Agora, vamos utilizar os conjuntos (set) no exemplo a seguir.

01 >>> print dias da semana com sets


02 >>> dias _ da _ semana = {("segunda", "terça", "quarta",
"quinta", "sexta", "sábado", "domingo"}
03 >>> set {1, 2, 3, 4, 5, 6, 7}

Perceba que acabamos de montar um calendário. Neste caso, podemos


empregar tanto os sets como as tuplas e, por conseguinte, as listas, já que uma
tupla nada mais é que uma lista.

BUILT-IN Types. Python Software Foundation, Wilmington, 2019. Disponível em: https://
docs.python.org/3/library/stdtypes.html. Acesso em: 6 nov. 2019.
CORREIA, R. H. S. Python uma linguagem de tipagem dinâmica e forte. Abra Seu Código,
Sorocaba, 23 fev. 2016. Disponível em: http://blog.abraseucodigo.com.br/python-uma-
-linguagem-de-tipagem-dinamica-e-forte.html. Acesso em: 6 nov. 2019.
GOUVEIA, R. Operações com Conjuntos. Toda Matéria, Matosinhos, 13 maio 2019.
Disponível em: https://www.todamateria.com.br/operacoes-com-conjuntos/. Acesso
em: 6 nov. 2019.
INTERSEÇÃO. In: WIKIPEDIA: a enciclopédia livre. [San Francisco, CA: Wikimedia Foun-
dation, 2005]. Disponível em: https://pt.wikipedia.org/wiki/Culin%C3%A1ria_da_
Mal%C3%A1sia. Acesso em: 6 nov. 2019.

Leituras recomendadas
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed. Porto
Alegre: AMGH; Bookman, 2011. 780 p.
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Prentice Hall, 2008.
552 p.
TONSIG, S. L. Engenharia de software: análise e projeto de sistemas. 2. ed. Rio de Janeiro:
Ciência Moderna, 2008. 319 p.
10 Coleções conjunto em Pyton

Os links para sites da Web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.

Você também pode gostar