-
Notifications
You must be signed in to change notification settings - Fork 0
/
coleções_conjuntos.py
146 lines (95 loc) · 3.95 KB
/
coleções_conjuntos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
"""
Conjuntos
- Conjuntos em qualquer linguagem de programação, estamos fazendo referência à Teoria dos Conjuntos
da Matemática.
- No Python, os conjuntos são chamados de Sets.
Dito isso, da mesma forma que na matemática:
- Sets (conjuntos) não possuem valores duplicados;
- Sets não possuem valores ordenados;
- Elementos não são acessados via índice, ou seja, conjuntos não são indexados;
Conjuntos são bons para se utilizar quando precisamos armanezar elementos mas não nos importamos
com a ordenação deles. Quando não precisamos se preocupar com chaves, valores e itens duplicados.
Os conjuntos (sets) são referenciados em Python com chaves {}
Diferença entre conjuntos (Sets) e mapas (dicionários) em Python:
- Um dicionário tem {}: valor;
- Um conjunto tem apenas valor;
# Definindo um conjunto
# Forma 1
s = set({1, 6, 4, 8, 3, 7, 9, 4}) # Repare que temos valores repetidos.
print(s)
print(type(s))
# Ao criar um conjunto e tiver repetições de um elemento, o mesmo será ignorado
# sem gerar erro e não fará parte do conjunto.
# Forma 2 - Mais comum
s = {1, 6, 4, 8, 3, 7, 9, 4}
print(s)
print(type(s))
# Podemos verificar se determinado elemento está contido no Set
if 5 in s:
print('Achamos o valor')
else:
print('Não foi encontrado...')
# Importante lembrar que, além de não termos valores duplicados, não temos ordem.
# Listas aceitam valores duplicados, fechando com 10 elementos
lista = [55, 6, 4, 2, 1, 6, 44, 8, 12, 8]
print(f'Lista: {lista} - Com {len(lista)} elementos')
# tupla aceitam valores duplicados, fechando com 10 elementos
tupla = 55, 6, 4, 2, 1, 6, 44, 8, 12, 8
print(f'Tupla: {tupla} - Com {len(tupla)} elementos')
# dict não aceitam chaves duplicadas, fechando com 8 elementos
dict = {}.fromkeys([55, 6, 4, 2, 1, 6, 44, 8, 12, 8], 'dict')
print(f'Dicionário: {dict} - Com {len(dict)} elementos')
# Set aceitam não valores duplicados, fechando com 8 elementos
Set = {55, 6, 4, 2, 1, 6, 44, 8, 12, 8}
print(f'Set: {Set} - Com {len(Set)} elementos')
# Assim como todo outro conjunto Python, podemos colocar tipos de qualquer dados misturados em Sets
# Usos interessantes com Sets
# Imagine que fizemos um formulário de cadastro de visitantes em uma feira ou museu e os visitantes inforam manualmente
# a cidade de onde vieram
# Nós adicionamos cada cidade em uma lista Python, já que em uma lista podemos adicionar novos
# elementos e ter repetição.
cidades = ['Belo Horizonto', 'São Paulo', 'Campinas', 'Ribeirão Preto', 'São Paulo', 'Campinas']
print(cidades)
print(len(cidades))
# Agora precisamos saber quantas cidades distintas temos:
# Forma 1:
print(len(set(cidades)))
# Métodos Conjuntos Matemáticos
# Imagine que temos dois conjuntos:
# - Estudantes de Python
# - Estudantes de Java
estudante_python = {'Marcos', 'Pedro', 'Olívia', 'Brup', 'Heloisa'}
estudante_java = {'Pedro', 'Laura', 'Jheniffer', 'Heloisa'}
# Veja que alguns alunos estudaram duas linguagens
# Precisamos gerar um conjunto com nomes únicos
# Forma 1:
uniao1 = estudante_python.union(estudante_java)
print(uniao1)
# uniao1 = estudante_java.union(estudante_python)
# print(uniao1)
# Forma 2:
unicos2 = estudante_python | estudante_java
print(unicos2)
# Veja que alguns alunos estudaram duas linguagens
# Gerar um conjunto de estudantes que estão em ambos os cursos
# Forma 1:
uniao1 = estudante_python.intersection(estudante_java)
print(uniao1)
# unicos1 = estudante_java.intersection(estudante_python)
# print(uniao1)
# Forma 2:
unicos2 = estudante_python & estudante_java
print(unicos2)
# Gerar um conjunto de estudantes que não estão em outo curso
# Forma 1:
so_python = estudante_python.difference(estudante_java)
print(so_python)
so_java = estudante_java.difference(estudante_python)
print(so_java)
# Soma*, Valor máximo*, Valor mínimo*, Tamanho
conjunto = {1, 6, 4, 8, 9, 6, 3, 1, 11, 22}
print(sum(conjunto))
print(max(conjunto))
print(min(conjunto))
print(len(conjunto))
"""